
设计模式之装饰模式
发布日期:2021-05-07 15:14:40
浏览次数:14
分类:原创文章
本文共 1085 字,大约阅读时间需要 3 分钟。
目录
装饰模式
概念
- 装饰( Decorator )模式又叫做包装模式。
- 通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。
- 装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。
类图角色和职责
- 适用于:
- 装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。
案例
class Car{public: virtual void show() = 0;};class RunCar : public Car{public: void run() { cout << "可以跑" << endl; } virtual void show() { run(); }};class SwimCarDirector : public Car{public: SwimCarDirector(Car *p) { m_p = p; } void swim() { cout << "可以游" << endl; } virtual void show() { m_p->show(); swim(); }private: Car *m_p;};class FlyCarDirector : public Car{public: FlyCarDirector(Car *p) { m_p = p; } void fly() { cout << "可以飞" << endl; } virtual void show() { m_p->show(); fly(); }private: Car *m_p;};void main(){ Car *runcar = NULL; runcar = new RunCar; runcar->show(); cout <<"车开始装饰swim"<<endl; SwimCarDirector *swimCar = new SwimCarDirector(runcar); swimCar->show(); cout <<"车开始装饰fly"<<endl; FlyCarDirector *flyCar = new FlyCarDirector(swimCar); flyCar->show(); delete flyCar; delete swimCar; delete runcar; return ;}
【注】参考传智扫地僧C++设计模式
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年03月18日 22时32分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue实现选项卡功能
2019-03-04
uni-app请求头中携带token
2019-03-04
vue中接收后台的图片验证码并显示
2019-03-04
Vue入门学习笔记(1)
2019-03-04
趣谈win10常用快捷键
2019-03-04
数学建模更新12(数学线性规划模型1)
2019-03-04
Android,SharedPreferences的使用
2019-03-04
两款用于检测内存泄漏的软件
2019-03-04
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
2019-03-04
OSI 7 层网络模型
2019-03-05
JDK 内置的多线程协作工具类的使用场景
2019-03-05
Java 中哪些对象可以获取类对象
2019-03-05
linux 的 sleep 命令
2019-03-05
11.2.6 时间值的小数秒
2019-03-05
Redis源码分析(七)--- zipmap压缩图
2019-03-05
大规模集群自动化部署工具--Chef的安装部署
2019-03-05
自定义Hive Sql Job分析工具
2019-03-05