本文共 950 字,大约阅读时间需要 3 分钟。
装饰器模式,挺难学的,感觉技巧上复杂一点,有那么一丝递归的意思在里面。
第一次看代码,看的云里雾里,在我单步调试之后,终于明白了装饰器模式的关键写法——调用父类(含参)构造函数,再直接调用父类的函数去执行。
这样就可以依次把要装饰的东西,全都装上去。
表面上和建造者模式非常相似,仔细想想,建造者模式更简单明了。但是,我想装饰器模式有他存在的必要,因为建造者模式是组装成一个东西,而装饰器模式是往上加东西,是两种不同的设计思路。
代码如下:
#includeusing namespace std;class Phone{public: Phone() {} virtual ~Phone() {} virtual void ShowDecorate() {}};//具体的手机类class iPhone : public Phone{private: string m_name; //手机名称public: iPhone(string name): m_name(name){} ~iPhone() {} void ShowDecorate() { cout< << "'s deco" < ShowDecorate(); }};//具体的装饰类class DecoratorPhoneA : public DecoratorPhone{public: DecoratorPhoneA(Phone *phone) : DecoratorPhone(phone) {} void ShowDecorate() { DecoratorPhone::ShowDecorate(); AddDecorate(); }private: void AddDecorate() { cout<<"add guajian"< ShowDecorate(); delete dpa; delete dpb; delete iphone; return 0;}//
转载地址:http://ezoji.baihongyu.com/