#include <iostream>
class Component
{
public:
virtual void Operation(){};
};
class ConcreteComponent: public Component
{
public:
virtual void Operation()
{
std::cout<<"orginal property"<<std::endl;
}
};
class Decorator: public Component
{
public:
Decorator(Component* co)
{
this->_co=co;
}
~Decorator()
{
delete _co;
}
protected:
Component* _co;
};
class ConcreteDecorator: public Decorator
{
public:
ConcreteDecorator(Component* coa):Decorator(coa) {};
virtual void Operation()
{
_co->Operation();
std::cout<<"AddBehavor"<<std::endl;
}
};
int main(int argc, char* argv[])
{
Component* com=new ConcreteComponent();
Decorator* dec=new ConcreteDecorator(com);
dec->Operation();
return 0;
}
注意ConcreteComponent和Decorator共用基类,统一接口,不过不统一, 也可以引用指针实现,即不Decorator 不继承Component, 但为什么一定要继承,我也不知道
Decorator 设计模式
最新推荐文章于 2022-04-17 20:30:30 发布
本文通过一个具体的C++代码示例,介绍了装饰者模式的基本概念及其应用。装饰者模式允许在不改变原有对象的情况下为其添加新的行为,实现了组件行为的动态扩展。

1994

被折叠的 条评论
为什么被折叠?



