随心而作 2020-04-19
高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
代码要依赖于抽象的类,而不要依赖于具体的类。要针对接口或抽象类编程,不要针对具体实现类编程。
为什么使用依赖倒置原则?
1)增加松耦合
抽象接口不改变,具体类实现接口,具体类容易扔掉,更换。
2)增加隔离
首先看一个违反DIP的示例,按钮控制开灯和关灯。存在的问题是,高层策略依赖于低层模块,抽象依赖于具体细节。
改进的方法,Button调用Server接口,Lamp实现Server接口。实现高层依赖抽象,具体实现也依赖于抽象。