设计模式之装饰模式(Decorator)

来源:互联网 发布:python exit 0 exit 1 编辑:程序博客网 时间:2024/06/04 01:15

优点:1)动态地给对象添加一些额外的职责
2)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责

#include <iostream>using namespace std;class Base{public:    virtual void Operator() = 0;};class A : public Base{public:    void Operator(){cout << "A::Operator"<<endl;}};class Decorator : public Base{public:    Decorator(Base*base){_base = base;}    void Operator()    {        if(_base)            _base->Operator();    }private:    Base *_base;};class DecoratorA : public Decorator{public:    DecoratorA(Base *base):Decorator(base){}    void Operator()    {        addStateA();        Decorator::Operator();    }    void addStateA(){cout << "DecoratorA::addStateA"<<endl;}};class DecoratorB : public Decorator{public:    DecoratorB(Base *base):Decorator(base){}    void Operator()    {        addStateB();        Decorator::Operator();    }    void addStateB(){cout << "DecoratorB::addStateB"<<endl;}};int main(){    A *a = new A;    Decorator *decoratorA = new DecoratorA(a);    decoratorA->Operator();    cout << "-----------"<<endl;    Decorator *decoratorB = new DecoratorB(a);    decoratorB->Operator();    cout << "-----------"<<endl;    Decorator *ab = new DecoratorB(decoratorA);    ab->Operator();    return 0;}

运行结果:
DecoratorA::addStateA
A::Operator


DecoratorB::addStateB
A::Operator


DecoratorB::addStateB
DecoratorA::addStateA
A::Operator

原创粉丝点击