定义: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.<br>定义的含义:<br>a. 高层模块不应依赖低层模块,两者应都依赖其抽象<br>b. 抽象不应依赖细节<br>c. 细节应依赖抽象<br>(细节即实现类,抽象即接口或抽象类)<br>在Java中的表现:<br>a. 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的<br>b. 接口或抽象类不依赖于实现类<br>c. 实现类依赖接口或抽象类<br>用更加精简的定义就是:面向接口编程——OOD(Object-Oriented-Design, 面向对象设计)的精髓之一。<br>下面,我们通过反证法来证明:<br>论题:依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高嗲吗的可读性和可维护性。<br>反论题:不使用依赖倒置原则也可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。<br>eg:<br>司机驾驶奔驰车:<br>司机类:<br>publicclassDriver{publicvoiddriver(Benzbenz){benz.run();}}<br>奔驰类:<br>publicclassBenz{publicvoidrun(){System.out.printIn("奔驰运行");}}<br>场景类:<br>publicclassClient{publicstaticvoidmain(String[]args){DriverzhangSan=newDriver();Benzbenz=newBenz();zhangSan.driver(benz);}}<br>Now 张三要开宝马怎么办???<br>首先 我们需要产生一个宝马类(代码略:类似奔驰类)<br>但是!张三却无法开,因为没有对应的方法<br>我们的设计出现了问题:司机类与奔驰类是紧耦合关系,导致可维护性降低,可读性降低(阅