设计模式设计原则——依赖倒置原则(DIP)

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。

官方翻译:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。

  • 高层(稳定)不依赖低层(变化),两者依赖抽象(稳定)。高层模块不应该直接依赖于底层模块的具体实现,而应该依赖于底层的抽象。换言之,模块间的依赖是通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。

  • 抽象(稳定)不依赖细节(变化),细节依赖抽象(稳定)。接口和抽象类不应该依赖于实现类,而实现类依赖接口或抽象类。这一点其实不用多说,很好理解,"面向接口编程"思想正是这点的最好体现。

相关推荐
Asort1 天前
JavaScript设计模式(十一):享元模式(Flyweight) - 优化内存与性能的利器
前端·javascript·设计模式
Asort1 天前
JavaScript设计模式(十)——外观模式 (Facade)
前端·javascript·设计模式
沢田纲吉1 天前
《LLVM IR 学习手记(五):关系运算与循环语句的实现与解析》
前端·c++·llvm
沢田纲吉1 天前
《LLVM IR 学习手记(六):break 语句与 continue 语句的实现与解析》
前端·c++·llvm
爱和冰阔落1 天前
【C++进阶】继承上 概念及其定义 赋值兼容转换 子类默认成员函数的详解分析
c++
wearegogog1231 天前
液压位置控制源代码实现与解析(C语言+MATLAB联合方案)
java·c语言·matlab
余辉zmh1 天前
【C++篇】:LogStorm——基于多设计模式下的同步&异步高性能日志库项目
开发语言·c++·设计模式
艾莉丝努力练剑1 天前
【C++STL :list类 (二) 】list vs vector:终极对决与迭代器深度解析 && 揭秘list迭代器的陷阱与精髓
linux·开发语言·数据结构·c++·list
王嘉俊9251 天前
设计模式--装饰器模式:动态扩展对象功能的优雅设计
java·设计模式·装饰器模式
寒冬没有雪1 天前
矩阵的翻转与旋转
c++·算法·矩阵