以前面的Shape1为例,MainForm类依赖Line, Rect, Circle,这就是高层模块依赖低层模块,一旦低层模块有变化,则高层模块也要一并修改。MainForm的设计应该是稳定的,不能因为低层模块发生变化就变得不稳定。
而Shape2则是MainForm和Line, Rect, Circle等都依赖Shape抽象,这就隔离了变化,实现了两边都稳定的效果。
Shape抽象的设计不能与具体的实现细节绑定,也就是与Line, Rect, Circle等无关,不能引入依赖,否则就不稳定。
依赖倒置原则可用于检验大多数设计模式,解决依赖倒置的方法就是设计好抽象类,使其尽量稳定,以隔离变化。