定义:开发过程中,如果客户端程序依赖某个对象,我们常常对它进行一次抽象,形成抽象类,接口,这样客户端就可以摆脱锁依赖的具体类型。
其实也是里氏替换原则和依赖倒置原则
废话不说先看一个例子
这个例子看似完美,也符合依赖抽象的原则,但是能不能再完美点,客户端不需要知道TimeProvider类型,就可直接调用他的类型呢,选择方式把ITimeProvider的实例传递给客户端程序,这个对象被称为Assembler 汇编
那么这样子客户端只需要知道接口和Assembler即可
看看客户端调用
这样子就达到更高层的抽象,使得客户端调用无需知道具体类型就可以实现实例,这种叫做依赖注入,注意Assembler不是依赖注入,他只是注入时候常用的一种手段
注入的三个角色
客户对象,Assembler,抽象类型 之中两个不能变,变的只有Assembler,它是负责组装的,如果注入过程还需要修改客户端,那么就违背的注入的原则