
设计模式:可复用面向对象软件及基础:3-4 结构型模式:装饰模式(decorator)
发布日期:2021-05-06 15:37:04
浏览次数:25
分类:精选文章
本文共 1011 字,大约阅读时间需要 3 分钟。
装饰模式
概念
装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。
装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。
类图角色和职责
适用于:
(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。
案例
#includeusing namespace std;class Car{public: virtual void show() = 0;protected:private:};class RunCar : public Car{public: void run() { cout << "可以跑" << endl; } virtual void show() { run(); }protected:private:};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"< show(); cout <<"车开始装饰fly"< show(); delete flyCar; delete swimCar; delete runcar; return ;}
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月12日 06时25分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用mybatis-generator生成底层
2019-03-05
Android APK 重签名
2019-03-05
Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息
2019-03-05
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2019-03-05
Mybatis【7】-- Mybatis如何知道增删改是否成功执行?
2019-03-05
Mybatis【9】-- Mybatis占位符#{}和拼接符${}有什么区别?
2019-03-05
计算输入的一句英文语句中单词数
2019-03-05
zabbix系列之十——添加短信告警
2019-03-05
docker复制文件到宿主机
2019-03-05
lvs+keepalive构建高可用集群
2019-03-05
Mysql高可用架构(主从同步)
2019-03-05
mysql主从延迟高的原因
2019-03-05
ATS缓存数据结构
2021-05-08
glob模块
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
oracle无法启动asm实例记录
2019-03-05
取消vim打开文件全是黄色方法
2019-03-05
YAML基础教程
2019-03-05