cplusplus装饰器模式
装饰器模式
#include <iostream> using namespace std; //抽象组件类 class Component{ public: virtual void move()=0; }; class ConreteComponentOne: public Component{ public: ConreteComponentOne(){ cout<<"ConreteComponentOne instance"<<endl; } void move(){ cout<<"move one"<<endl; } }; class Decorator{ public: Decorator(shared_ptr<Component> &pobj){ this->pobj = pobj; } void move(){ cout<<"Decorator "; this->pobj->move(); } private: shared_ptr<Component> pobj; }; class ConcreteDecoratorOne: public Decorator{ public: ConcreteDecoratorOne(shared_ptr<Component> &pobj): Decorator(pobj){ cout<<"ConcreteDecoratorOne"<<endl; } void say(){ cout<<"ConcreteDecoratorOne say"<<endl; } }; int main(void){ shared_ptr<Component> cpone = make_shared<ConreteComponentOne>(); cpone->move(); cout<<"____"<<endl; shared_ptr<ConcreteDecoratorOne> cdp = make_shared<ConcreteDecoratorOne>(cpone); cdp->move(); cdp->say(); cout<<"____"<<endl; ConcreteDecoratorOne cdone = ConcreteDecoratorOne(cpone); cdone.say(); cdone.move(); }

浙公网安备 33010602011771号