DIP,Dependence Inversion Principle:
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.
即“面向接口编程”:
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象;——模块间的依赖通过抽象发生。实现类之间不发生直接的依赖关系(eg. 类B被用作类A的方法中的参数),其依赖关系是通过接口或抽象类产生的;
- 抽象不应该依赖细节;——接口或抽象类不依赖于实现类;
- 细节应该依赖抽象;——实现类依赖接口或抽象类。
何为“倒置”?
依赖正置:类间的依赖是实实在在的实现类间的依赖,即面向实现编程,这是正常人的思维方式;