一、依赖反转原则:Inversion Of Control—IOC
1、控制反转:流程控制从程序员反转给框架
控制反转是比较笼统的设计思想,并不是一个具体的实现方法,一般用来指导框架层的设计。
控制指对程序执行流程的控制。
反转指在没有框架前,程序员自己控制整个程序的执行。用了框架后,通过框架控制,就是流程的控制从程序员反转给了框架。
2、依赖注入:依赖的对象在外部创建好后,通过注入方式传递给类使用
依赖注入是一种具体编码技巧,不通过new的方式在类内部创建依赖类的对象,而是将依赖的类对象在外部创建好之后,通过构造函数,函数参数等方式(或注入)传递给类来使用。
3、依赖注入框架
通过依赖注入框架提供的扩展点,简单配置一下所有需要的类以及类与类之间依赖关系,就可以实现由框架来自动创建对象,管理对象的生命周期,依赖注入等原本需要程序员来做的事情。依赖注入框架有很多,比如Java Spring,Google Guide,Pico Container等。
4、依赖反转原则:高低层模块通过抽象相互依赖
(1)定义
依赖反转原则也叫依赖倒置原则,类似控制反转,指导框架层设计。
就是高层模块不依赖低层模块,它们共同依赖同一个抽象对象。抽象不要依赖具体实现细节,具体实现细节依赖抽象。
(2)作用
依赖倒置原则可以降低类间的耦合性。
依赖倒置原则可以提高系统的稳定性。
依赖倒置原则可以减少并行开发引起的风险。
依赖倒置原则可以提高代码的可读性和可维护性。
(3)案例
比如tomcat容器(高层模块) 调用执行 java web应用程序(低层模块),它们之间没有依赖关系,而是共同依赖Servlet规范(抽象)。Servlet规范不依赖具体的tomcat容器和java web应用的实现细节,而tomcat容器和java web应用程序依赖Servlet规范,它们之间通过Servlet规范(抽象)间接依赖,彼此耦合性低,功能开发互不影响。