依赖倒置原则(Dependence Inversion Principle,DIP)
定义:
高层模块不能依赖低层模块,两者都应该依赖于抽象(模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其关系是通过接口或抽象类发生)
抽象不应该依赖于细节(接口和抽象类不依赖于实现类)
细节应该依赖于抽象(实现类依赖于接口或抽象类)
每一个逻辑的实现都是由原子逻辑,不可分割的原子逻辑就是低层模块(接口、抽象类),原子逻辑的组装就是高层模块(UI层)
细节就是实现类,实现接口或继承抽象类而产生的类就是细节,可以直接被实例化。
称之为:面向接口编程(Object-Oriented Design, OOD)
优点:
减少类与类之间的耦合性
提高系统的稳定性
提高代码的可读性和维护性
降低并行开发引起的风险
实现:
控制反转(Inversion of Control)
DIP的一种具体实现方式