从面向对象编程的观点来解释ID:
Collaborating classes should rely on the infrastructure to provide the necessary services.
依赖注入是一系列设计模式和原则,用于开发松散耦合的程序。
最基本的目的:可维护性。
大多数编程技术的目的是尽可能高效率地提供可工作的程序。其中一个目的就是编写可维护性的代码。
使代码容易维护的一种方式就是松散耦合。松散耦合使代码具有可扩展性,可扩展性使代码具有可维护性。
四大误解
DI普遍用于延迟绑定
DI普遍用于单元测试
DI是一种抽象工厂
DI需要DI容器
延迟绑定
延迟绑定是一种不需要重新编译代码就能替换应用程序一部分的能力。
DI能提供延迟绑定,但两者不能划等号。
一种抽象工厂
很多人将DI看成一种服务,用于装载别的服务,也就是服务装载着(Service Locator)。但这是DI的对立面。
DI容器
DI容器是一个可选库,方便我们组合组件,但这不是必须的。
DI的目标
替换原则,DI最重要的软件设计原则。
在软件设计中,实现同一接口的一个实现拦截另一个实现,这个叫做装饰者模式。它能使我们引进新的特性和方面而不用重写原有的代码。
另一种给现有代码增加新功能的方式是对接口的当前实现用一个新的实现替代。组合模式?
还有一种就是用到了适配器模式。
使用DI的好处