设计模式-装饰模式
来源:互联网 发布:床上用品品牌 知乎 编辑:程序博客网 时间:2024/05/29 08:35
装饰模式(Decorator):动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。
装饰模式把类中的装饰功能从类中搬移去除,并把每个要装饰的功能放在单独的类中,用这个类包装要装饰的对象。因此在客户端可以有选择的、按顺序包装对象。
例如:对一个人进行装扮,可以用不同的服饰进行不同的打扮。
UML:
//抽象类class Person {public: virtual void show() = 0;};//具体的对象class PersonA :public Person{private: string m_name;public: PersonA(string name) :m_name(name) {} virtual void show() { cout << "装扮的" << m_name << endl;; }};//装饰抽象类class Finery :public Person {private: Person *m_person;public: Finery(Person *person) :m_person(person) {} void show() { m_person->show(); }};//具体装饰类class TShirts :public Finery {public: TShirts(Person *person) :Finery(person){} void show() { cout << "T恤 "; Finery::show(); //调用基类show,相当于对基类进行装饰 }};class BigTrouser :public Finery {public: BigTrouser(Person *person) :Finery(person) {} void show() { cout << "大垮裤 "; Finery::show(); }};class Sneakers :public Finery {public: Sneakers(Person *person) : Finery(person) {} void show() { cout << "球鞋 "; Finery::show(); }};int main(){ Person *p = new PersonA("xiaoyu"); Sneakers *sk = new Sneakers(p); BigTrouser *bt = new BigTrouser(sk); TShirts *ts = new TShirts(bt); ts->show(); //ts->show,bt->show,sk->show,p->show system("pause"); return 0;}
0 0
- 设计模式---装饰模式
- 设计模式:装饰模式
- 设计模式------装饰模式
- 设计模式--装饰模式
- 设计模式--装饰模式
- 设计模式--装饰模式
- 设计模式 装饰模式
- 设计模式----装饰模式
- 设计模式-【装饰模式】
- 设计模式--装饰模式
- 设计模式装饰模式
- 设计模式 - 装饰模式
- 设计模式-----装饰模式.
- 设计模式-----装饰模式.
- [ 设计模式 ] 装饰模式!
- 设计模式:装饰模式
- 设计模式 - 装饰模式
- 设计模式 - 装饰模式
- AbstractQueuedSynchronizer的介绍和原理分析
- 简单下拉刷新原型
- 子类沙盒
- Leetcode -- 22. Generate Parentheses
- ABAP获得目录下符合条件的文件名
- 设计模式-装饰模式
- python 小技巧
- hive改表结构的两个坑
- poj 3070 Fibonacci
- Python 批处理修改图像的名字
- java表格的使用 单元格绘制
- angularjs 表单验证,包含必填、手机、邮箱...
- 常见面试题(未完待续。。)
- 免费域名和空间搭建个人网站——服务器篇