装饰者模式C++实现
2014-10-03 11:13
239 查看
装饰者模式:动态地为对象添加额外的职责;
Component:对象接口;
Decorator:装饰抽象类,从外类来扩展Component的功能,但对于Component而言,是无需知道Decorator类的存在的;
ConcreteDecorator:就是具体的装饰对象类,起到给Component增添职责的功能;
装饰模式:是为已有功能动态添加更多功能的一种方式,它将每个要装饰的功能放在单独的类中,并让这个类包含它要装饰的对象;因此,当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择得、按照顺序的使用装饰功能来包装对象了;
装饰模式优点 :把类的装饰功能从类中搬除,可以简化原有的类,有效地将类的核心职责与装饰功能区分开,而且可以去除相关类中重复的装饰逻辑;
![](http://img.blog.csdn.net/20141003111728752?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVsbG93b3JsZDIwMDcwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
代码示例:
待装饰对象、装饰者类及具体装饰品类定义和实现如下:
客户端代码如下:
最终输出如下:
Component:对象接口;
Decorator:装饰抽象类,从外类来扩展Component的功能,但对于Component而言,是无需知道Decorator类的存在的;
ConcreteDecorator:就是具体的装饰对象类,起到给Component增添职责的功能;
装饰模式:是为已有功能动态添加更多功能的一种方式,它将每个要装饰的功能放在单独的类中,并让这个类包含它要装饰的对象;因此,当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择得、按照顺序的使用装饰功能来包装对象了;
装饰模式优点 :把类的装饰功能从类中搬除,可以简化原有的类,有效地将类的核心职责与装饰功能区分开,而且可以去除相关类中重复的装饰逻辑;
代码示例:
待装饰对象、装饰者类及具体装饰品类定义和实现如下:
#ifndef PERSON_H #define PERSON_H #include <stdio.h> #include <iostream> #include <string> using namespace std; class Person { public: Person(){} Person(string strname) { name = strname; } virtual void show() { cout << "Decorate xiao cai " << endl; } private: string name; }; class Finery:public Person { public: void decorate(Person *mcomponent) { component=mcomponent; } void show() { component->show(); } protected: Person *component; }; class TShirts:public Finery { public: void show() { cout << "TShirts "; component->show(); } }; class BigTrouser:public Finery { public: void show() { cout << "BigTrouser "; component->show(); } }; #endif
客户端代码如下:
#include "person.h" int main() { Person *xc = new Person("xiaocai"); cout << "first decorator is following:" << endl; BigTrouser *bt = new BigTrouser(); TShirts *ts = new TShirts(); bt->decorate(xc); ts->decorate(bt); ts->show(); delete ts; delete bt; delete xc; return 0; }
最终输出如下:
相关文章推荐
- 《Head First设计模式》之装饰者模式实例代码C++实现
- C++实现装饰者模式
- (C++实现)——装饰者模式(Decorator Pattern)
- 设计模式之装饰者模式(c++实现)
- 装饰者模式(Decorator)的c++实现(改进)
- 转florian大神blog之 - 从实现装饰者模式中思考C++指针和引用的选择
- 大话设计模式--装饰者模式 Decorator -- C++实现实例
- HeadFirst设计模式 之 C++实现(三):Decorator(装饰者模式)
- Head First设计模式C++实现--第三章:装饰者(Decorator)模式
- 《Head First设计模式》之装饰者模式实例代码C++实现
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 从实现装饰者模式中思考C++指针和引用的选择
- 装饰者模式及C++代码实现
- 装饰者模式(Decorator)的c++实现示例
- 装饰者模式及C++实现
- Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 设计模式C++实现——装饰者模式
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 大话设计模式--装饰者模式 Decorator -- C++实现实例