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

  设计模式总共有六大基本原则,统称为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

时间: 2024-10-10 07:33:53

学习设计模式 - 六大基本原则之依赖倒置原则的相关文章

学习设计模式 - 六大基本原则之里氏替换原则

设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principl

学习设计模式 - 六大基本原则之开闭原则

设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principl

学习设计模式 - 六大基本原则之单一职责原则

设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principl

学习设计模式 - 六大基本原则之迪米特法则

设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principl

设计模式课程 设计模式精讲 3-4 依赖倒置原则讲解+coding

1 课程讲解 2 代码演练 2.1 非面向接口编程 2.2 面向接口编程1 传参 2.3 面向接口编程2 构造函数 2.4 面向接口编程3 set方法 1 课程讲解 2 代码演练 2.1 非面向接口编程 缺点: 测试类: package com.geely.design.principle.dependencyinversion; public class Test { //v1.1 普通方法调取java类 public static void main(String[] args) { Gee

设计模式六大原则(3)--依赖倒置原则

定义: 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口:抽象接口不应该依赖于具体实现.而具体实现则应该依赖于抽象接口.依赖倒置原则英文全称为Dependence Inversion Principle,简称为DIP. 问题由来: 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类A一般是高层模块,负责复杂的业务逻辑:类B和类C是低层模块,负责基本的原子操作:假如修改类A,会给程序带来不必要的风险. 解决方案: 将类A修改为依赖接口I,类B和

设计模式六大原则(3):依赖倒置原则(转载)

设计模式六大原则(3):依赖倒置原则 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类A一般是高层模块,负责复杂的业务逻辑:类B和类C是低层模块,负责基本的原子操作:假如修改类A,会给程序带来不必要的风险. 解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率. 依赖倒置原则

设计模式六大原则---依赖倒置原则(DIP)

定义 依赖倒置原则(Dependency Inversion Principle) 核心思想:依赖于抽象     具体体现: 体现一:高层模块不应该依赖低层模块.两个都应该依赖抽象. 体现二:抽象不应该依赖细节.细节应该依赖抽象. 依赖倒置原则告诉我们:细节是多变的,而抽象是相对稳定的.所以我们编程的时候要注重抽象的编程,而非细节编程. 实例 1.AGP插槽:主板和显卡之间的关系的抽象.主板和显卡通常是使用AGP插槽来连接的,这样,只要接口适配,不管是主板还是显卡更换,都不是问题. 2.驾照:司

设计模式六大原则之依赖倒置原则

一.概念: 依赖倒置原则英文缩写DIP(Dependence Inversion 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. 翻译过来就三层含义