【wiki】依赖反转原则
【简书】依赖倒置原则
依赖反转原则
维基百科:
在面向对象编程领域中,依赖反转原则(Dependency inversion principle,DIP)是指一种特定的解耦(传统的依赖关系建立在高层次上,而具体的策略设置则应用在低层次的模块上)形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。
该原则规定:
- 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。
- 抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。
该原则颠倒了一部分人对于面向对象设计的认识方式。如高层次和低层次对象都应该依赖于相同的抽象接口。
图1中,高层对象A依赖于底层对象B的实现;图2中,把高层对象A对底层对象的需求抽象为一个接口A,底层对象B实现了接口A,这就是依赖反转。
我的理解:
两个关键点:
-
高层次和低层次都依赖抽象接口,高层次不依赖低层次的具体实现;
-
接口由高层次定义,而不是低层次定义,低层次实现高层次定义的接口(因为高层次决定需求,所以高层次定义接口、低层次实现接口更合理)。