依赖注入接口与具体类相比?

时间:2015-11-26 10:34:00

标签: dependency-injection solid-principles

我对DI中的几点感到困惑。让我解释: 首先,依赖注入是否必须遵循依赖性倒置原则? 如果是这样,我们就不能将具体的类实例注入依赖。因为,此操作违反了DIP。 让我问一个例子:

public class Client {

private Service service; // Service is concrete class !

Client(Service service) {this.service = service;}
}

所以在这个例子中,依赖和依赖都是具体的。这违反了DIP原则,我们可以说这是依赖注入吗?在我的意见中,是的,我们可以。因为DI是所有对象创建,这些代码履行实际职责并从依赖中获取创建对象的操作。但同时它也没有遵循DIP。我在等你的想法:) 在此先感谢朋友们。

1 个答案:

答案 0 :(得分:8)

  

依赖注入是否必须遵循依赖性倒置原则?

不,不。依赖注入只是从外部向组件注入依赖项的做法,而不是让组件创建或请求这些依赖项。

因此,虽然您可以在不遵循依赖性倒置原则的情况下应用依赖注入,但遵循DIP通常是一种很好的做法,因为DIP促进了松散耦合,这使得更容易更换,装饰,拦截和模拟依赖关系,这会增加可测试性,灵活性和可维护性。