在这种情况下是否需要使用依赖注入
Is it require to use dependency injection in this scenario
我有 class ClassA
ClassA
有方法 Method1
从另一个 class ClassB
,我想从 ClassA
访问 Method1
方法
目前我使用的格式如下
B类文件
public void test()
{
ClassA obj = new ClassA();
obj.Method1();
}
我的问题
只有一种方法 test
在 ClassB
中使用 ClassA
class 引用。为此,如果我们遵循 dependency injection(constructor),每次 ClassA
在 ClassB
constructor 中初始化。因此,我计划在这种情况下避免使用 DI 并使用上述方法。对吗?
在上面的场景中,Method1
可能应该是一个静态方法,因为 ClassA
没有任何构造函数参数,而且似乎没有被多次使用。
依赖注入就是为了解决耦合之类的问题。例如,如果 ClassA
有一堆依赖项,则 ClassB
不需要关心 ClassA
是否作为依赖项注入。即:
private ClassA myClassA;
public ClassB(ClassA myClassA){
this.myClassA = myClassA; // Class B does not need to care how myClassA was constructed!
}
另一个优点是您可以用接口替换 ClassA
,这样 ClassB
甚至不必关心它使用的实际实现。这通常非常适合测试,因为您可以用模拟替换数据库访问或计时器等内容。
对于您有相当简单的情况 class,例如列表或点,通常没有太多理由使用依赖注入。
我有 class ClassA
ClassA
有方法 Method1
从另一个 class ClassB
,我想从 ClassA
Method1
方法
目前我使用的格式如下
B类文件
public void test()
{
ClassA obj = new ClassA();
obj.Method1();
}
我的问题
只有一种方法 test
在 ClassB
中使用 ClassA
class 引用。为此,如果我们遵循 dependency injection(constructor),每次 ClassA
在 ClassB
constructor 中初始化。因此,我计划在这种情况下避免使用 DI 并使用上述方法。对吗?
在上面的场景中,Method1
可能应该是一个静态方法,因为 ClassA
没有任何构造函数参数,而且似乎没有被多次使用。
依赖注入就是为了解决耦合之类的问题。例如,如果 ClassA
有一堆依赖项,则 ClassB
不需要关心 ClassA
是否作为依赖项注入。即:
private ClassA myClassA;
public ClassB(ClassA myClassA){
this.myClassA = myClassA; // Class B does not need to care how myClassA was constructed!
}
另一个优点是您可以用接口替换 ClassA
,这样 ClassB
甚至不必关心它使用的实际实现。这通常非常适合测试,因为您可以用模拟替换数据库访问或计时器等内容。
对于您有相当简单的情况 class,例如列表或点,通常没有太多理由使用依赖注入。