C++之依赖倒置原则

1. 依赖于具体抽象(接口),不依赖于具体的实现,也就是针对接口编程。

2. 实现高层业务和实现层、实现层和实现层之间的解耦合;

实例:

电脑框架和电脑内部的配件产品(或提供配件产品的厂商)实现解耦合

电脑框架(Computer)由硬盘(HardDisk),内存(Memory)和CPU组成,,,选择厂商分别为:
硬盘(XSDisk),内存(JSDMemory)和CPU(InterCPU)。

#include <iostream>
using namespace std;
class HandDisk
{
public:virtual void work() = 0;     //抽象层
};
class Memory
{
public:virtual void work() = 0;     //抽象层
};
class CPU
{
public:virtual void work() = 0;     //抽象层
};class Computer
{
public:Computer(HandDisk *handdisk, Memory *memory, CPU *cpu){this->handdisk = handdisk;  this->memory = memory;  this->cpu = cpu;}void work()  //电脑工作,也就是内存+硬盘+cpu协同工作        //高层业务逻辑向抽象层靠拢{handdisk->work();   memory->work();  cpu->work();}
private:HandDisk *handdisk;Memory *memory;CPU *cpu;
};//厂商、产品
class XSDisk :public HandDisk  //实现虚函数重写               //实现层向中间抽象层靠拢,所以都是work()函数
{
public:void work(){ cout << "西数硬盘" << endl; }
};
class JSDMemory :public Memory                               //实现层向中间抽象层靠拢,所以都是work()函数
{
public:void work(){ cout << "JSD内存" << endl; }
};
class InterCPU :public CPU                                   //实现层向中间抽象层靠拢,所以都是work()函数
{
public:void work(){ cout << "Interl的CPU" << endl; }
};void main()
{HandDisk *handdisk = NULL;Memory *memory = NULL;CPU *cpu = NULL;handdisk = new XSDisk;memory = new JSDMemory;cpu = new InterCPU;Computer *myComputer = new Computer(handdisk, memory, cpu);myComputer->work();delete myComputer;delete cpu;delete memory;delete handdisk;cout << "Hello" << endl;system("pause");return ;
}

分析:

1. 先确定框架,并确定抽象层
2. 高层业务逻辑向抽象层靠拢
3. 实现层向中间抽象层靠拢
4. 电脑工作,也就是内存+硬盘+cpu协同工作

C++之依赖倒置原则相关推荐

  1. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP

    其他面向对象设计原则3: 依赖倒置原则DIP  The Dependency Inversion Principle 7.1 依赖倒置原则DIP The Dependency Inversion P ...

  2. 设计模式六大原则:依赖倒置原则、为什么、多例子、分析例子、总结

    1. 依赖倒置原则的定义 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转的中心思想是面向接口编程 依赖倒转原则是基于这样的设计理念: 相对于细节的多变 ...

  3. 6大设计原则之依赖倒置原则

    依赖倒置原则: 包含三层含义: 高层模块不应该依赖低层模块,二者应该依赖抽象 抽象不应该依赖细节 细节应该依赖抽象 再精简些就是:其核心是面向接口编程 抽象:即抽象类和接口,抽象是对实现的约束,对依赖 ...

  4. 【设计模式】软件设计七大原则 ( 依赖倒置原则 | 代码示例 )

    文章目录 一.依赖倒置原则简介 二.面向实现编程代码示例 ( 反面示例 ) 1.顾客类 2.测试类 三.依赖倒置原则代码示例 ( 推荐示例 | 使用接口方法注入 IGood 实现类 ) 1.顾客类 2 ...

  5. ASP.NET 设计模式中依赖倒置原则

    依赖倒置原则 A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 依赖倒置原则 A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于 ...

  6. 设计模式原则之依赖倒置原则

    所谓依赖倒置原则(Dependence Inversion Principle )就是要依赖于抽象,不要依赖于具体.简单的说就是对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合. ...

  7. C#软件设计——小话设计模式原则之:依赖倒置原则DIP

    前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做" ...

  8. 深入浅出设计模式原则之依赖倒置原则

    下面以"顾客购物程序"为例来说明依赖倒置原则的应用(案例源码). #include <QCoreApplication> #include <iostream&g ...

  9. java设计模式之设计原则②依赖倒置原则

    定义: ⑴高层模块不应该依赖低层模块,二者都应该依赖其抽象 ⑵抽象不应该依赖细节,细节应该依赖抽象 ⑶针对接口编程,不要针对实现编程 我们通过抽象包括使用接口或者抽象类可以使各个类或模块的实现彼此独立 ...

  10. 设计模式六大原则(3)——依赖倒置原则

    定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类A一 ...

最新文章

  1. 强人总结的哄老婆秘籍
  2. Spark RDD概念学习系列之rdd持久化、广播、累加器(十八)
  3. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)
  4. AP1242G胖转瘦,廋转胖
  5. 2019年第十届蓝桥杯 - 省赛 - Java研究生组 - A. 立方和
  6. java中try-catch另外一种用法:try(){}语法使用
  7. 一个传统媒体人转型创业的真实故事
  8. inner join,left join,right join 三者的用法
  9. 某些安卓手机在Mac系统下无法通过数据线连接ADB(安卓手机USB双模式)解决方案...
  10. Python cheat sheet 大全
  11. 论Acmer的自我修养 (算法学习目标和推荐题目)
  12. Protues仿真 8X8 LED点阵
  13. 主从脉冲触发器和边沿触发器区别 一次翻转
  14. 2022年6月 青少年软件编程(图形化) 等级考试试卷(四级)
  15. CASthesis 模板编译的问题
  16. uniapp保存图片到相册
  17. Apollo Planning决策规划算法代码详细解析 (13): RuleBasedStopDecider
  18. 人工智能1—K-means聚类算法
  19. 最新远古VOD点播影视系统模板入侵
  20. 8-22vue-day1

热门文章

  1. “京东•京点”智慧办公解决方案发布 科技驱动办公场景智慧跃迁
  2. 北京工作三年程序员,2018年4~5月面试经历
  3. CentOS-7安装WPS办公软件
  4. 在微信内部浏览器接口weixinJSBridgeReady
  5. TimerTask 的使用
  6. python文件批量重命名
  7. NVMe SSD 学习总结 04 :NVME 优势:性能、维护性、单T性能、延迟、I/O效率和产品形态
  8. 数字音频Mixer算法
  9. 入职五年回顾(十四) 2013年9月
  10. 低调现身北京的吴恩达,刚刚给人工智能公司下了个定义