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

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

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

2020-01-26 13:44:11
字體:
來源:轉載
供稿:網友

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

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

類視圖

代碼實現

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();}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柘荣县| 常州市| 明溪县| 辽宁省| 清远市| 拜城县| 武城县| 陇南市| 尖扎县| 平乡县| 江川县| 咸阳市| 莲花县| 河北区| 衡水市| 日土县| 台前县| 广南县| 庐江县| 北票市| 广饶县| 金溪县| 湖南省| 丹阳市| 宜宾县| 临颍县| 彰武县| 尼木县| 洛隆县| 敖汉旗| 长治县| 新竹县| 屏东市| 南皮县| 郸城县| 佛教| 木里| 大港区| 西安市| 鸡泽县| 柳林县|