设计模式C++版:第五式装饰者模式
来源:互联网 发布:mac os 10.12 原版 编辑:程序博客网 时间:2024/06/06 20:00
装饰模式,就是动态地为已有功能添加更多功能的一种方式把每个要装饰的功能放在单独的类中,让他包装它所有装饰的对象。所以需要执行特殊行为时,客户代码就可以在运行时根据需要有选择、按顺序的使用装饰功能包装对象。这也是和建造者模式不同的地方。
装饰者模式的优势是:可以简化核心类,把核心职责和装饰功能区分开。下面是简单示例:
#include <iostream>#include <string>class Person{public:Person(){ }Person(std::string name){this->m_name = name;}//核心功能virtual void show(){std::cout << "装扮的" << m_name << std::endl;}private:std::string m_name;};class Finery :public Person{protected:Person *m_person;public:void Decorate(Person *componert){this->m_person = componert;}void show() override{if (m_person !=nullptr){m_person->show();}}};class TShirts : public Finery{public:void show()override{//装饰功能std::cout << "T恤";Finery::show(); /*核心功能*/}};class TBigTrouser : public Finery{public:void show()override{//装饰功能std::cout << "肥裤子";Finery::show();}};int main(){Person *person = new Person("小菜");TBigTrouser *bt = new TBigTrouser;TShirts *ts = new TShirts;bt->Decorate(person);ts->Decorate(bt); ts->show();/*先调用自身的show,再调用父类,涉及多态,接着实际调用bt的show,再接着调用下一层的show----*/delete person;delete bt;delete ts;return 0;}
0 0
- 设计模式C++版:第五式装饰者模式
- C#--设计模式之装饰者模式
- 设计模式-装饰者模式
- 设计模式:装饰者模式
- 设计模式:装饰者模式
- 设计模式: 装饰者模式
- 设计模式--装饰者模式
- 设计模式-装饰者模式
- 设计模式--装饰者模式
- 设计模式-装饰者模式
- 设计模式------------装饰者模式
- 设计模式--装饰者模式
- 设计模式:装饰者模式
- 设计模式-装饰者模式
- 设计模式-装饰者模式
- 设计模式-装饰者模式
- 设计模式--装饰者模式
- 【设计模式】装饰者模式
- SpringMVC中利用字符集过滤器characterEncodingFilter解决中文乱码
- 用java写的一个排序算法
- CountDownLatch应用
- C++ Socket编程步骤
- Codeforces Round #368 (Div. 2) D. Persistent Bookcase(n层m个的书架的四种操作)
- 设计模式C++版:第五式装饰者模式
- Oracle报错宗介
- cf#348-E. Little Artem and Time Machine-树状数组+map节点(动态开点树状数组)
- 浏览器对象模型DOM
- [教程] libsvm-mat在MATLAB平台下的安装 (转自MATLABSKY)
- mybatis代码生成器下载及说明
- 六级英语学习(一)
- setsockopt()用法(参数详细说明)
- char []与char*区别