依赖反转原则
一、控制反转
- 控制反转:Inversion Of Control, 缩写为IOC。
- 这里的“控制 ”指的是对程序员执行流程的控制,而“反转”指的是没有使用框架之前,程序员自己控制整个程序的执行。在使用框架之后,整个程序的执行流程可以通过框架来控制。流程的控制权从程序员"反转"到了框架。
- 实现控制反转的方法有很多,有依赖注入等方法,所以控制反转并不是一种具体的实现技巧,而是一个比较笼统的设计思想,一般用来指导框架层面的设计。
二、依赖注入
- 依赖注入:Dependency Injection,缩写为DI。
- 描述:依赖注入和控制反转相反,它是一种具体的编程技巧。不通过new()的方式在类内部创建依赖类的对象,而是将依赖的对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类使用。
三、依赖注入框架
-
依赖注入框架:DI Framework
-
我们可以通过依赖注入框架提供的扩展点,简单配置一下所有需要的类以及类与类之间依赖关系,就可以实现由框架自动创建对象、管理对象的声明周期、依赖注入等原本需要程序员来做的事情。
四、依赖反转原则
- 依赖反转原则:Dependency Inversion Principle, 缩写为DIP。
- 中文有时叫做依赖倒置原则。
- 这条原则跟控制反转优点类似,主要用来指导框架层面的设计。高层模块不依赖底层模块,他们共同依赖同一个抽象,抽象不要依赖具体实现细节,具体实现细节依赖抽象。