Dependency injection 依赖注入接口与具体类?

Dependency injection 依赖注入接口与具体类?,dependency-injection,solid-principles,Dependency Injection,Solid Principles,我对DI中的几点感到困惑。让我解释一下: 首先,依赖注入是否必须遵循依赖倒置原则? 如果是这样,我们就不能注入具体的类实例作为依赖项。因为,此操作违反了DIP。 让我通过一个例子来提问: public class Client { private Service service; // Service is concrete class ! Client(Service service) {this.service = service;} } 所以在这个例子中,依赖和依赖都是具体的。尽管这

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

public class Client {

private Service service; // Service is concrete class !

Client(Service service) {this.service = service;}
}
所以在这个例子中,依赖和依赖都是具体的。尽管这违反了DIP原则,我们可以说这是依赖注入吗?在我看来,是的,我们可以。因为DI是所有对象的创建,这些代码履行了真正的职责,并从依赖项获取创建对象的操作。但同时,它也不跟随下跌。我在等待你的想法:) 提前感谢朋友们

依赖项注入是否必须遵循依赖项反转原则

不,没有。依赖项注入只是从外部将依赖项注入组件的实践,而不是让组件创建或请求这些依赖项

因此,尽管您可以在不遵循依赖项反转原则的情况下应用依赖项注入,但遵循DIP通常是一个很好的实践,因为DIP促进了松散耦合,这使得替换、修饰、拦截和模拟依赖项更加容易,从而提高了可测性、灵活性和可维护性