网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C++设计模式之装饰模式怎么实现-创新互联

本文小编为大家详细介绍“C++设计模式之装饰模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++设计模式之装饰模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

创新互联网站设计,为客户量身定制各类网站建设业务,包括企业型、电子商务型、成都响应式网站建设公司、行业门户型等各类网站,实战经验丰富,成功案例众多。以客户利益为出发点,创新互联网站制作为客户规划、定制网站制作符合企业需求、带有营销价值的网络建站方案认真对待每一个客户,我们不用口头的语言来吹擂我们的优秀,上千多家的成功案例见证着我们的成长。

装饰模式是一种经典的类功能扩展模式,其精髓在装饰类使用继承加聚合的方式获得接口和要实现对象,然后通过自己实现扩展接口

作用
装饰模式通过装饰类动态地将责任附加到对象上,若要扩展功能,无需通过继承增加子类就能扩展对象的新功能,提供了比继承更有弹性的替代方案,避免了子类数量膨胀带来的系统臃肿。

代码实现


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

读到这里,这篇“C++设计模式之装饰模式怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。


新闻标题:C++设计模式之装饰模式怎么实现-创新互联
新闻来源:http://bjjierui.cn/article/ehdgj.html

其他资讯