gpt4 book ai didi

java - 静态方法或DI

转载 作者:行者123 更新时间:2023-11-30 02:02:38 25 4
gpt4 key购买 nike

我是 Java 或一般编程新手,我通常会将 Main 类的实例作为静态方法,以便从其他类轻松访问它。例如。private static Main instance; 然后我会为它创建一个 getter public static Main getInstance() ,在其他类上我只需执行 Main.getInstance() .otherMethods(); 获取在 Main 类中声明的其他方法和变量。

我最近被告知不建议这样做,并被告知我应该使用依赖注入(inject)。我的问题是为什么我不应该在 Java 中使用它以及为什么依赖注入(inject)会更好?使用这种方式和简单地作为方法参数传递有什么区别,有什么优点和缺点?

最佳答案

已经有大量关于此的问题和答案。您可以搜索“why DI”以获得大量有关原因的理论。例如:Why does one use dependency injection?

DI 的主要优点是:

  • 灵 active - 如果您需要替换某个组件,或使用多个组件而不是单个组件,那么 DI 可以让您只需进行一些更改即可调整代码。

  • 更容易进行单元测试 - 您可以将依赖组件的模拟实现注入(inject)到正在测试的组件中,并仅测试目标组件。

    <

现实生活中的例子:

我曾经见过一个使用 Singleton 数据库访问类的项目。整个应用程序中有一个全局常量:

public static final DB_INSTANCE = ...;

它在应用程序中到处使用,如下所示:

DB_INSTANCE.runQuery("SELECT ...");

然后,功能请求能够同时使用多个数据库(类似于“分片”)。 DB_INSTANCE 单例表示单个数据库,因此此功能需要重写大量 行代码 - 组件现在已将“数据库实例”注入(inject)其中。

关于java - 静态方法或DI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52332744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com