原网址:
https://blog.csdn.net/anqiu4023/article/details/102275902

#include <iostream>
#include<string>
using namespace std;
//person 类
class Person {public:
Person(){}
Person(std::string name);
virtual void Show();
//当你用一个基类指针或引用指向一个继承类对象的时候,
//调用一个虚函数时, 实际调用的是继承类的版本。
private:
std::string name;
};
Person::Person(std::string name)
{this->name = name;
}
void Person::Show(){//父类的函数cout << "ZhuangShiDe"<< name << endl;
}
//装饰类
//负责穿戴不同的服装 有一个参数是服装对象
class Finery :public Person{protected:
Person* component;
public:
Finery(){}
void Decorator(Person* component);//穿衣服函数
void Show();
};
void Finery::Decorator(Person* component){this->component = component;
}
void Finery::Show(){//子类的函数
if (component != NULL)
component->Show();
}
//具体服装
class Tshirts :public Finery{public:
Tshirts(){}
void Show(){std::cout << "T shirts";
Finery::Show();
}
};
class Sneakers :public Finery{public:
Sneakers(){}
void Show(){std::cout << " Sneakers";
Finery::Show();
}
};
int main(){Person* xc = new Person("XiaoCai");
std::cout << "first style:" << std::endl;
Tshirts* ts = new Tshirts();
Sneakers* sn = new Sneakers();
ts->Decorator(xc);//小菜穿第一件衣服
sn->Decorator(ts);//小菜穿第二件衣服
sn->Show();
return 0;
}

输出结果:
first style:
SneakersT shirtsZhuangShiDeXiaoCai

C++设计模式——装饰着模式(高屋建瓴)相关推荐

  1. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

  2. [Head First设计模式]山西面馆中的设计模式——装饰者模式

    原文:[Head First设计模式]山西面馆中的设计模式--装饰者模式 引言 在山西面馆吃鸡蛋面的时候突然想起装饰者这个模式,觉得面馆这个场景跟书中的星巴兹咖啡的场景很像,边吃边思考装饰者模式.这里 ...

  3. 设计模式——装饰者模式

    本文是阅读 Head First 设计模式--装饰者模式的总结. 这本书的教学模式很不错,个人很喜欢,由实际的案例由浅入深,循序渐进的让你明白良好的设计是多么的优雅迷人(回头看看自己的代码,WTF!) ...

  4. 设计模式装饰者模式_装饰者模式如何拯救了我的一天

    设计模式装饰者模式 在工作中,我正在处理庞大的Java代码库,该代码库是由许多不同的开发人员在15年的时间里开发的. 并不是所有的事情都由书来完成,但是同时我通常无法重构遇到的每一个奇怪的事物. 尽管 ...

  5. 23种设计模式——装饰者模式

    文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...

  6. 读书笔记---Head First 设计模式--- 装饰者模式

    读书笔记-Head First 设计模式- 装饰者模式 装饰者模式(Decorator Pattern) 装饰者模式--动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. ...

  7. Go 设计模式 - 装饰器模式

    装饰模式使用对象组合的方式动态改变或增加对象行为.Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式.使用匿名组合,在装饰器中不必显式定义转调原对象方法. 设计模式 装饰器模式 装饰器模式主要 ...

  8. 10. 设计模式-装饰者模式

    文章目录 设计模式-装饰者模式 1. 案例引出装饰者模式 2. 装饰者模式 2.1 装饰者模式定义 2.2 装饰者模式原理 2.3 装饰者模式解决星巴克咖啡订单问题 2.4 代码实现 抽象类Drink ...

  9. Spring设计模式(装饰器模式)

    Spring设计模式(装饰器模式) 模式的定义: 装饰者模式定义: ​ 动态地为一个对象添加一些额外的职责,若要扩展一个对象的功能,装饰者提供了比继承更有弹性的替代方案. 模式的结构图 : 模式包含角 ...

  10. 设计模式 装饰者模式 带你重回传奇世界

    今天继续设计模式之旅,给大家带来装饰者模式,国际惯例,先看定义. 装饰者模式:若要扩展功能,装饰者提供了比集成更有弹性的替代方案,动态地将责任附加到对象上. 先简单描述下装饰者模式发挥作用的地方,当我 ...

最新文章

  1. [C++]2-4 子序列的和
  2. 浅谈一致性Hash原理及应用
  3. Redis数据类型--字符串类型
  4. 第三十二章 elk(3)- broker架构 + 引入logback
  5. 1499元!三星Galaxy A40s开启预约:5000mAh大容量电池加持
  6. 警惕Python编程中异常处理结构可能的坑
  7. mysql show db_mysql show操作
  8. Java基础-IO流(13)
  9. Git flow(使用工具自动git flow+解决合并冲突)
  10. 自定义ImageButton,实现快进快退功能
  11. 3,graph语法学习
  12. 如何切图PS切图&网页切图
  13. 神仙代码静态测试工具 Helix QAC 2022.3中的新增功能
  14. php输出白天时间,php 判断白天黑夜
  15. 2019年CVTE实习心得
  16. 790. 多米诺和托米诺平铺
  17. 若依框架获取和修改当前登录用户信息
  18. python自动定期清理日志脚本支持Linux+windows
  19. matlab学位论文出图
  20. 宽带运营商服务器未响应是什么意思,宽带拨号服务器无响应

热门文章

  1. 00. 线性代数的本质
  2. [转] 明年,你还爱我吗?
  3. Leetcode 1276:不浪费原料的汉堡制作方案(超详细的解法!!!)
  4. android绿豆通讯录xml,Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】...
  5. 关于tomcat点击startup.bat出现闪退,输入http://localhost:8080网页打不开的解决方法
  6. 数据对接—kettle使用之一
  7. 笨方法学习Python 习题19 函数和变量 ---学习记录
  8. 阿里云服务器 安装下载工具aira2步骤
  9. 那些年,我们一起做过的 Java 课后练习题(56 - 60)
  10. 社交战争下半场:从流量战到内容战