设计模式9:装饰模式【结构型】
2012-12-18 19:37
267 查看
#include <iostream> #include <string> using namespace std; // struct IPhone { public: IPhone() { } virtual ~IPhone() { } virtual void ShowDecorate() = 0; }; class CApplePhone : public IPhone { public: CApplePhone(string name) : m_name(name) { } virtual ~CApplePhone() { } virtual void ShowDecorate() { cout<<m_name<<" "; } private: string m_name; }; class CNokiaPhone : public IPhone { public: CNokiaPhone(string name) : m_name(name) { } virtual ~CNokiaPhone() { } virtual void ShowDecorate() { cout<<m_name<<" "; } private: string m_name; }; // struct IDecorate : public IPhone { public: IDecorate(IPhone *pPhone) : m_pPhone(pPhone) { } virtual ~IDecorate() { } virtual void ShowDecorate() { m_pPhone->ShowDecorate(); } private: IPhone *m_pPhone; }; class CDecorateA : public IDecorate { public: CDecorateA(IPhone *pPhone) : IDecorate(pPhone) { } virtual ~CDecorateA() { } virtual void ShowDecorate() { IDecorate::ShowDecorate(); AddDecorate(); } private: void AddDecorate() { cout<<"挂件"<<endl; } }; class CDecorateB : public IDecorate { public: CDecorateB(IPhone *pPhone) : IDecorate(pPhone) { } virtual ~CDecorateB() { } virtual void ShowDecorate() { IDecorate::ShowDecorate(); AddDecorate(); } private: void AddDecorate() { cout<<"贴膜"<<endl; } }; // void main() { CApplePhone Phone("apple"); CDecorateA decorate(&Phone); decorate.ShowDecorate(); }
相关文章推荐
- 23种设计模式3--结构型模式(适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式)
- C#面向对象设计模式第十讲:Decorator 装饰模式(结构型模式)
- GoF23种设计模式之结构型模式之装饰模式
- 设计模式-结构型模式-装饰
- 设计模式复习笔记 (14)结构型模式:装饰模式
- java设计模式之结构型模式-装饰模式
- 设计模式十:decorator(装饰)——对象结构型模式
- 从FLC中学习的设计模式系列-结构型模式(2)-装饰
- 设计模式笔记 9.Decorator 装饰模式(结构型模式)
- 面向对象设计模式之Decorator装饰模式(结构型)
- 结构型设计模式-装饰模式
- Java设计模式_(结构型)_装饰模式
- java-设计模式(结构型)-【装饰模式】
- [设计模式-结构型]装饰模式(Decorator)
- 结构型设计模式(一)(适配器模式,桥接模式,组合模式,装饰模式)
- [导入]C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式).zip(9.84 MB)
- 设计模式中结构型模式(四)装饰模式(Decorator)
- 设计模式(四)装饰模式(结构型)
- 设计模式之结构型模式(适配器、桥接、外观、代理、享元、组合、装饰)
- 结构型设计模式-装饰器模式