学习设计模式 - 六大基本原则之依赖倒置原则

  设计模式总共有六大基本原则,统称为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)结合里氏替换原则原则使用

 

  依赖倒置原则是实现开闭原则的重要途径。

  

  每个原则的有点都是有限度的,并不是放之四海而皆准的真理。所以别为了遵循一个原则二放弃了一个项目的终极目标:投产上线和盈利。作为一个项目经理或架构师,应该懂得技术只是实现目的的工具。

 

 

学习资料:

《设计模式之禅》秦小波 著

 

posted @ 2018-09-02 21:25  timfruit  阅读(228)  评论(0编辑  收藏  举报