[设计模式]合成复用原则
合成复用原则:继承和组合,优先使用组合。
这样写,每开一种车,就要弄一个新的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;
}
测试结果:
[设计模式]合成复用原则相关推荐
- 设计模式-合成复用原则-》面向对象设计原则
合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚 ...
- 设计模式-合成复用原则
2019独角兽企业重金招聘Python工程师标准>>> 合成复用原则: 尽量使用对象组合, 而不是继承来达到复用的目的. 合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和 ...
- 细说设计模式七大原则(7):合成复用原则
基本介绍 英文名:Composite Reuse Principle,CRP 定义:软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 问题由来:通常类的复用分为继承复 ...
- Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)
1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...
- 【设计模式】软件设计七大原则 ( 合成复用原则 | 代码示例 )
文章目录 一.合成复用原则简介 二.合成复用 与 继承复用 优缺点 三.合成复用原则代码示例 1.继承复用代码示例 2.合成复用代码示例 一.合成复用原则简介 合成复用原则 又称为 组合复用原则 , ...
- 设计模式的七大设计原则:其七:合成复用原则
合成复用原则(Composite Reuse Principle) 基本介绍: 原则是尽量使用合成/聚合的方式,而不是使用继承. 设计原则核心思想: 1.找出应用中可能需要变化之处,把它们独立出来,不 ...
- 【设计模式】设计原则:CARP 合成复用原则
合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合(has-a)/聚合(contanis-a),而不是继承关系达到软件复用的目的.可以 ...
- 【设计模式】合成复用原则
合成复用原则是指:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现. 设想这样一个案例:加入要开车,有几种不同的车型,使用继承的话,代码如下 class AbstractCar { ...
- 4.7 合成复用原则
一. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle, ...
最新文章
- 11: facebook原生登录
- 六轴机器人 宝元系统_庆云大国重器上线六轴智能焊接机器人,锻造高质量发展硬核...
- html代码大全(很全的)_5行Python代码就能爬取 3000+ 上市公司的信息?
- 社工库365开网站公开售卖盗取的账号信息
- 图深度学习-第1部分
- Java程序设计语言基础05:Java的类和对象
- php mime base64,base64_encode — 使用 MIME base64 对数据进行编码
- Redis管理及监控工具treeNMS
- 田老师书法工作室学员作品展(二)
- 为了防止女朋友怼我,我就先用python爬了3600个怼人表情包等她来战!
- 利用kali hydra 暴力破解Windows7(hydra的基本用法)会继续更新
- MS-RTOS --- 产品特性
- android遥控器管理,Android 遥控器适配
- python中将数据写入excel
- JSON和list之间的转换
- 常用的激活函数sigmoid,relu,tanh
- 视频剪辑后期处理软件生态
- ASEMI整流桥ABS10的参数怎么看,ABS10的作用是什么?
- 网络安全——应急响应之入侵排查
- QQ表情:符号-文字 对照JSON
热门文章
- SignalR ——Android实践
- C语言试题四十六之将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
- 无代码iVX编程实现简单跳跃超级玛丽游戏
- php基础教程 第二步 通俗易懂的学习变量、常量与数据类型
- 怎么在mysql中打开表存信息,我应该如何存储用户的“收藏夹”在mySQL表?
- 史上最接近上帝的方程!神秘的数字4.669,目前没有人能解开这个谜语......
- 不同对象的通话是时长​
- 30张不明觉厉的照片,看几遍终于看懂了
- 盘点那些让程序员目瞪口呆的Bug都有什么?
- nvidia控制面板点了没反应win7_为什么没有nvidia控制面板_win7没有nvidia控制面板怎么找回-系统城...