真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++設(shè)計(jì)模式之裝飾模式Decorator的示例分析

小編給大家分享一下C++設(shè)計(jì)模式之裝飾模式Decorator的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)建站為客戶(hù)提供專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開(kāi)發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開(kāi)發(fā)、WEB系統(tǒng)開(kāi)發(fā)、微信二次開(kāi)發(fā)、成都做手機(jī)網(wǎng)站等網(wǎng)站方面業(yè)務(wù)。

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

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

類(lèi)視圖

C++設(shè)計(jì)模式之裝飾模式Decorator的示例分析

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

看完了這篇文章,相信你對(duì)“C++設(shè)計(jì)模式之裝飾模式Decorator的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


本文名稱(chēng):C++設(shè)計(jì)模式之裝飾模式Decorator的示例分析
當(dāng)前地址:http://weahome.cn/article/gepssd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部