【设计模式】合成复用原则
合成复用原则是指:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
设想这样一个案例:加入要开车,有几种不同的车型,使用继承的话,代码如下
class AbstractCar
{
public:virtual void run() = 0;
};//大众
class Volk :public AbstractCar
{
public:virtual void run(){cout << "大众车启动了" << endl;}
};
//拖拉机
class Tuolaji :public AbstractCar
{
public:virtual void run(){cout << "拖拉机启动了" << endl;}
};//某个人想开拖拉机
class Person1:public Tuolaji
{
public:void doufeng(){run();}
};//某个人想开大众
class Person2 :public Volk
{
public:void doufeng(){run();}
};//每一种具体情况都需要写一个类,而且这两个类 都是具体的,不符合针对抽象编程
这增加了类之间的耦合性,并且如果车型一直增加,那么继承也需要增加,代码冗余
使用合成复用原则,将车类作为一直属性 与 人类 组合起来。
//继承和组合 优先使用组合
class AbstractCar
{
public:virtual void run() = 0;
};//大众
class Volk :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 != NULL){delete this->car;this->car = NULL;}}public:AbstractCar* car;
};void test02()
{Person* p = new Person;p->setCar(new Volk); //开大众p->doufeng();p->setCar(new Tuolaji);p->doufeng();delete p;
}
【设计模式】合成复用原则相关推荐
- 设计模式-合成复用原则-》面向对象设计原则
合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚 ...
- 设计模式-合成复用原则
2019独角兽企业重金招聘Python工程师标准>>> 合成复用原则: 尽量使用对象组合, 而不是继承来达到复用的目的. 合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和 ...
- [设计模式]合成复用原则
合成复用原则:继承和组合,优先使用组合. 这样写,每开一种车,就要弄一个新的Person类. 代码如下: #include <iostream> using namespace std;c ...
- 细说设计模式七大原则(7):合成复用原则
基本介绍 英文名:Composite Reuse Principle,CRP 定义:软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 问题由来:通常类的复用分为继承复 ...
- Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)
1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...
- 【设计模式】软件设计七大原则 ( 合成复用原则 | 代码示例 )
文章目录 一.合成复用原则简介 二.合成复用 与 继承复用 优缺点 三.合成复用原则代码示例 1.继承复用代码示例 2.合成复用代码示例 一.合成复用原则简介 合成复用原则 又称为 组合复用原则 , ...
- 设计模式的七大设计原则:其七:合成复用原则
合成复用原则(Composite Reuse Principle) 基本介绍: 原则是尽量使用合成/聚合的方式,而不是使用继承. 设计原则核心思想: 1.找出应用中可能需要变化之处,把它们独立出来,不 ...
- 【设计模式】设计原则:CARP 合成复用原则
合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合(has-a)/聚合(contanis-a),而不是继承关系达到软件复用的目的.可以 ...
- 4.7 合成复用原则
一. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle, ...
最新文章
- Promise入门详解和基本用法 我来教你
- 回车与换行 ASCII
- Java生鲜电商平台-促销系统的架构设计与源码解析
- 换位思考的最高境界是换待遇,所以,换位思考就是空话!!!
- 连接查询_左连接/右连接/全连接的区别
- 知乎高赞:如果你是一个 Java 面试官,你会问哪些问题....
- input做成label效果
- Java — Map.keySet()、Map.put()、Map.get()【Map类、Set类】
- 知识点汇总【一】操作系统三十八问
- 函数式编程能否支持更高效的区块链基础设施?
- 一键关闭 openwrt路由器的led灯
- ajax后台重定向会返回什么_处理jquery ajax重定向
- python中存储坐标_利用python进行坐标提取以及筛选(文件操作的小应用)
- HTML和CSS面试题—整理过的48题,关注收藏,持续更新
- Oracle | awr报告分析
- plotly系列 | 绘制散点图组合箱线图(联合图)
- SPSS独立样本t检验结果分析
- 电脑桌面运维工程师考证
- 使用 LaTeX 绘制流程图
- 国产处理器兆芯可运行Windows,已试制出Intel i5级处理器