设计模式之装饰模式(Decorator)
2013-07-22 02:01
246 查看
装饰模式原理:给对象增加特性,这种特性是一种累加的效果
代码如下
代码如下
#include <iostream> #include <string> #include <list> using namespace std; /************************************************************************/ /* 装饰模式的作用是为对象增加属性 */ /************************************************************************/ class Phone { public: Phone(string name):m_name(name) { } Phone() { } virtual void show(){} protected: string m_name; }; class IPhone:public Phone { public: IPhone(string name):Phone(name) { } virtual void show(){cout << m_name << "的装饰" <<endl;} }; class HTCPhone:public Phone { public: HTCPhone(string name):Phone(name) { } virtual void show(){cout << m_name << "的装饰" <<endl;} }; class DecoratorPhone:public Phone { public: DecoratorPhone(Phone *pPhone) { m_pPhone = pPhone; } virtual void show() { m_pPhone->show(); } protected: Phone *m_pPhone; }; class DecoratorPhoneA:public DecoratorPhone { public: DecoratorPhoneA(Phone *pPhone): DecoratorPhone(pPhone) { } virtual void show() { DecoratorPhone::show(); cout << "挂饰" <<endl; } }; class DecoratorPhoneB:public DecoratorPhone { public: DecoratorPhoneB(Phone *pPhone):DecoratorPhone(pPhone){} virtual void show() { DecoratorPhone::show(); cout << "贴膜" <<endl; } }; int main() { Phone *iphone = new IPhone("iphone4s"); Phone *dpa = new DecoratorPhoneA(iphone); Phone *dpb = new DecoratorPhoneB(dpa); dpb->show(); return 0; }
相关文章推荐
- 设计模式之装饰模式(Decorator)
- 设计模式--装饰模式(Decorator)
- 设计模式拾荒之装饰器模式( Decorator Pattern ): 代理模式的双胞胎兄弟
- 设计模式之装饰模式(Decorator)
- 简单Java代码实例助你通俗易懂的理解什么是装饰(者)设计模式 (Decorator)
- 设计模式(四)装饰器模式Decorator(结构型)
- C#设计模式之八装饰模式(Decorator Pattern)【结构型】
- 设计模式 装饰模式(Decorator)
- 设计模式之装饰模式(Decorator)
- 设计模式13 - 装饰模式【Decorator Pattern】
- 装饰设计模式(Decorator)-IO
- 模式人生-从生活中的点点滴滴认识设计模式1-装饰器模式(Decorator Pattern)
- 设计模式 笔记 装饰模式 Decorator
- 深入浅出设计模式(九):12.装饰模式(Decorator) 13.桥模式(Bridge)14.策略模式(Strategy)
- C#面向对象设计模式第十讲:Decorator 装饰模式(结构型模式)
- 设计模式(八)装饰器模式Decorator(结构型)
- 设计模式之:装饰(Decorator)模式
- 设计模式 – 装饰模式(Decorator)
- 设计模式(八)装饰器模式Decorator(结构型)
- 设计模式--装饰模式(Decorator)