合成复用原则:继承和组合,优先使用组合。

这样写,每开一种车,就要弄一个新的Person类。
代码如下:

#include <iostream>
using namespace std;class AbstractCar
{public:virtual void run() = 0;
};class DaZhong :public AbstractCar
{public:virtual void run(){cout << "大众车启动" << endl;}
};class TuoLaJi :public AbstractCar
{public:virtual void run(){cout << "拖拉机启动" << endl;}
};class PersonA:public TuoLaJi
{public:void Doufen(){run();}
};class PersonB :public DaZhong
{public:void Doufen(){run();}
};

合成复用原则
代码如下:

#include <iostream>
using namespace std;class AbstractCar
{public:virtual void run() = 0;
};class DaZhong :public AbstractCar
{public:virtual void run(){cout << "大众车启动" << endl;}
};class TuoLaJi :public AbstractCar
{public:virtual void run(){cout << "拖拉机启动" << endl;}
};class Person
{public:void setCar(AbstractCar *car){this->car = car;}void Doufeng(){this->car->run();if (this->car != nullptr){delete this->car;}this->car = nullptr;}AbstractCar *car;
};void test01()
{Person *p = new Person;p->setCar(new DaZhong);p->Doufeng();p->setCar(new TuoLaJi);p->Doufeng();
}int main()
{test01();return 0;
}

测试结果:

[设计模式]合成复用原则相关推荐

  1. 设计模式-合成复用原则-》面向对象设计原则

    合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚 ...

  2. 设计模式-合成复用原则

    2019独角兽企业重金招聘Python工程师标准>>> 合成复用原则: 尽量使用对象组合, 而不是继承来达到复用的目的. 合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和 ...

  3. 细说设计模式七大原则(7):合成复用原则

    基本介绍 英文名:Composite Reuse Principle,CRP 定义:软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 问题由来:通常类的复用分为继承复 ...

  4. Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)

    1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...

  5. 【设计模式】软件设计七大原则 ( 合成复用原则 | 代码示例 )

    文章目录 一.合成复用原则简介 二.合成复用 与 继承复用 优缺点 三.合成复用原则代码示例 1.继承复用代码示例 2.合成复用代码示例 一.合成复用原则简介 合成复用原则 又称为 组合复用原则 , ...

  6. 设计模式的七大设计原则:其七:合成复用原则

    合成复用原则(Composite Reuse Principle) 基本介绍: 原则是尽量使用合成/聚合的方式,而不是使用继承. 设计原则核心思想: 1.找出应用中可能需要变化之处,把它们独立出来,不 ...

  7. 【设计模式】设计原则:CARP 合成复用原则

    合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合(has-a)/聚合(contanis-a),而不是继承关系达到软件复用的目的.可以 ...

  8. 【设计模式】合成复用原则

    合成复用原则是指:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现. 设想这样一个案例:加入要开车,有几种不同的车型,使用继承的话,代码如下 class AbstractCar { ...

  9. 4.7 合成复用原则

    一. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle, ...

最新文章

  1. 11: facebook原生登录
  2. 六轴机器人 宝元系统_庆云大国重器上线六轴智能焊接机器人,锻造高质量发展硬核...
  3. html代码大全(很全的)_5行Python代码就能爬取 3000+ 上市公司的信息?
  4. 社工库365开网站公开售卖盗取的账号信息
  5. 图深度学习-第1部分
  6. Java程序设计语言基础05:Java的类和对象
  7. php mime base64,base64_encode — 使用 MIME base64 对数据进行编码
  8. Redis管理及监控工具treeNMS
  9. 田老师书法工作室学员作品展(二)
  10. 为了防止女朋友怼我,我就先用python爬了3600个怼人表情包等她来战!
  11. 利用kali hydra 暴力破解Windows7(hydra的基本用法)会继续更新
  12. MS-RTOS --- 产品特性
  13. android遥控器管理,Android 遥控器适配
  14. python中将数据写入excel
  15. JSON和list之间的转换
  16. 常用的激活函数sigmoid,relu,tanh
  17. 视频剪辑后期处理软件生态
  18. ASEMI整流桥ABS10的参数怎么看,ABS10的作用是什么?
  19. 网络安全——应急响应之入侵排查
  20. QQ表情:符号-文字 对照JSON

热门文章

  1. SignalR ——Android实践
  2. C语言试题四十六之将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
  3. 无代码iVX编程实现简单跳跃超级玛丽游戏
  4. php基础教程 第二步 通俗易懂的学习变量、常量与数据类型
  5. 怎么在mysql中打开表存信息,我应该如何存储用户的“收藏夹”在mySQL表?
  6. 史上最接近上帝的方程!神秘的数字4.669,目前没有人能解开这个谜语......
  7. 不同对象的通话是时长​
  8. 30张不明觉厉的照片,看几遍终于看懂了
  9. 盘点那些让程序员目瞪口呆的Bug都有什么?
  10. nvidia控制面板点了没反应win7_为什么没有nvidia控制面板_win7没有nvidia控制面板怎么找回-系统城...