为什么要注入具体的类而不是注入接口



我目前正在处理一个Java项目。我对Java还很陌生。我过去做过C++/C#。

我有一个关于依赖注入的问题。为什么使用它的基本想法我已经很清楚了

public class MyClass
{
@Inject
private IFoo fooInterface;
@Inject
private Bar barClass;

}

带有

public interface iFoo
{
}
public class Bar
{
}

现在,注入一个实际的接口实现来减少依赖关系是完全合理的。

但我为什么要注射一种";正常的";具有的类没有实现接口?

你能帮我理解吗?

编辑:谢谢大家的评论。我相信我现在已经明白了依赖注入背后的想法。

只是澄清一下:在与其他开发人员交谈后,我被告知在我们的项目中,所有注入的依赖项都是在启动时构建的。但是,并非所有成员对象在启动时都是已知的。因此,这些成员对象不能通过构造函数传递。

另一点是,对于每个类类型(例如Bar(,整个项目只需要构建1个实例接缝,该实例将在整个项目中传递并由多个线程访问。因此,如果我们使用成员变量,我们可能会遇到并发问题。

=>我们团队的结论是避免成员变量,并将所有参数作为函数参数传递。

=>现在,我正在寻找一种方法来获得DI(这非常有意义(,但也有成员变量。

使用依赖项注入时,类将创建其依赖项的责任委托给依赖项注入系统。因此,您永远不想自己实例化依赖项。

否则,如果您的Bar类需要依赖项,那么您也必须在MyClass中处理它们。如果在许多地方使用Bar并添加依赖项,那么也必须更改Bar的所有用法。

相关内容

  • 没有找到相关文章

最新更新