定义:High Level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details.Details should depend upon abstractions.
定义的含义:
a. 高层模块不应依赖低层模块,两者应都依赖其抽象
b. 抽象不应依赖细节
c. 细节应依赖抽象
(细节即实现类,抽象即接口或抽象类)
在Java中的表现:
a. 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的
b. 接口或抽象类不依赖于实现类
c. 实现类依赖接口或抽象类
用更加精简的定义就是:
面向接口编程——OOD(Object-Oriented-Design,面向对象设计)的精髓之一。
下面,我们通过反证法来证明:
论题:依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高嗲吗的可读性和可维护性。
反论题:不使用依赖倒置原则也可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。
eg:
司机驾驶奔驰车:
司机类:
- publicclassDriver
- {
- publicvoiddriver(Benzbenz)
- {
- benz.run();
- }
- }
- publicclassBenz
- {
- publicvoidrun()
- {
- System.out.printIn("奔驰运行");
- }
- }