最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++設(shè)計(jì)模式之裝飾模式(Decorator)

 更新時(shí)間:2018年03月28日 10:59:43   作者:http://www.cnblogs.com/chencarl/p/8649394.html  
這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之裝飾模式Decorator的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

類視圖

代碼實(shí)現(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();
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

托里县| 拉孜县| 洛扎县| 阆中市| 资中县| 梁河县| 读书| 东明县| 奈曼旗| 孝义市| 黎城县| 丰县| 彰化县| 泾川县| 简阳市| 孝义市| 太白县| 丽江市| 日照市| 乌兰察布市| 墨玉县| 临清市| 伽师县| 游戏| 资溪县| 黑龙江省| 陆良县| 武安市| 靖宇县| 凤阳县| 紫金县| 墨竹工卡县| 凤庆县| 会昌县| 福州市| 汉川市| 宁德市| 桐乡市| 台山市| 上饶市| 申扎县|