设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principle)。
D-依赖倒置原则(Dependence Invension 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.)
二、理解
什么是依赖?一个对象(假设是A)的功能(方法)需要另一个对象(假设是B)来完成,这就叫做A依赖于B。如,司机开奔驰,司机完成这个动作,需要(依赖于)奔驰跑起来。代码如下:
若某一天,老板换了一辆宝马,让司机开。司机的代码会被修改:
被依赖者(车)的替换(修改),却要依赖者(Driver)来承担修改,这是不合理的。
根据依赖倒置原则,细节(实现)应该依赖于抽象。
实现案例:https://gitee.com/timfruit189/test-design-pattern
三、依赖传递的三种写法
1.构造方法传递依赖
2.setter()方法设置依赖
3.接口方法传递依赖,如上 dirve(ICar car)
四、注意事项
如何在项目中使用这个原则?
(1) 每个类精良都有接口或抽象类
(2)变量的表面类型精良是接口或者是抽象类
(3)任何类都不从具体类派生
这不是绝对的,有时设计缺陷在所难免,只要不超过两层的集成都是可以忍受的。
负责项目维护的同志基本可以不考虑这个规则了,维护工作基本上都是进行扩展开发,修复行为的。
(4)尽量不要复写基类的方法
(5)结合里氏替换原则原则使用
依赖倒置原则是实现开闭原则的重要途径。
每个原则的有点都是有限度的,并不是放之四海而皆准的真理。所以别为了遵循一个原则二放弃了一个项目的终极目标:投产上线和盈利。作为一个项目经理或架构师,应该懂得技术只是实现目的的工具。
学习资料:
《设计模式之禅》秦小波 著
原文地址:https://www.cnblogs.com/timfruit/p/9460604.html