国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++設計模式之裝飾模式(Decorator)

2020-05-23 13:34:41
字體:
供稿:網(wǎng)友

裝飾模式是一種經(jīng)典的類功能擴展模式,其精髓在裝飾類使用繼承加聚合的方式獲得接口和要實現(xiàn)對象,然后通過自己實現(xiàn)擴展接口

作用
裝飾模式通過裝飾類動態(tài)地將責任附加到對象上,若要擴展功能,無需通過繼承增加子類就能擴展對象的新功能,提供了比繼承更有彈性的替代方案,避免了子類數(shù)量膨脹帶來的系統(tǒng)臃腫。

類視圖

C++,設計模式,裝飾模式

代碼實現(xiàn)

class Component{public:  Component(){}  virtual ~Component(){}  virtual void operation() = 0;};class ConcreteComponentA : public Component{public:  ConcreteComponentA(){}  ~ConcreteComponentA(){}  void operation()  {    fprintf(stderr, "ConcreteComponentA's operation!/n");  }};class ConcreteComponentB : public Component{public:  ConcreteComponentB(){}  ~ConcreteComponentB(){}  void operation()  {    fprintf(stderr, "ConcreteComponentB's operation!/n");  }};class Decorator : public Component{public:  Decorator() :mComponent(NULL){}  virtual ~Decorator(){}  virtual void operation()  {    if (mComponent)      mComponent->operation();  }  virtual void setComponent(Component* pComponent)  {    mComponent = pComponent;  }protected:  Component* mComponent;};class ConcreteDecoratorE : public Decorator{public:  ConcreteDecoratorE ();  virtual ~ConcreteDecoratorE ();  virtual void addBehavior()  {    mComponent->operation();    fprintf(stderr, "ConcreteDecoratorE's addBehavior!/n");  }};class ConcreteDecoratorF : public Decorator{public:  ConcreteDecoratorF ();  virtual ~ConcreteDecoratorF ();  virtual void addBehavior()  {    operation();    fprintf(stderr, "ConcreteDecoratorF's addBehavior!/n");  }};int main(){  ConcreteComponentB *pComponent = new ConcreteComponentB();  ConcreteDecoratorF decorator;  decorator.setComponent(pComponent);  decorator.addBehavior();}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉荫县| 闽侯县| 宁强县| 观塘区| 平利县| 宜兴市| 大丰市| 内丘县| 收藏| 南康市| 枞阳县| 关岭| 淅川县| 从江县| 兴安盟| 永兴县| 柳江县| 陇西县| 威信县| 正定县| 德昌县| 英德市| 平湖市| 资阳市| 江源县| 霍林郭勒市| 苍山县| 兴隆县| 安化县| 淳化县| 河津市| 长子县| 汝阳县| 嘉鱼县| 木兰县| 兰溪市| 阳西县| 海城市| 渭源县| 东城区| 柳林县|