虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > C++设计模式之装饰模式(Decorator)

C++设计模式之装饰模式(Decorator)
类别:C/C++编程   作者:码皇   来源:互联网   点击:

这篇文章主要为大家详细介绍了C++设计模式之装饰模式Decorator的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

类视图

代码实现

    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++设计模式之组合模式
  • C++设计模式之享元模式(Flyweight)
  • C++设计模式之策略模式(Strategy)
  • C++设计模式之模板方法模式(TemplateMethod)
  • C++设计模式之观察者模式(Observer)
  • C++设计模式之迭代器模式(Iterator)
  • C++设计模式之适配器模式(Adapter)
  • C++设计模式之建造者模式(Builder)
  • C++设计模式之组合模式(Composite)
相关热词搜索: C++ 设计模式 装饰模式