#include <iostream>
#include <memory>
class IComponent{
public:
typedef std::auto_ptr<IComponent> SPtr;
IComponent* Sptr;
virtual void operation() = 0;
};
class Component: public IComponent{
public:
virtual void operation()
{
std::cout<<"World!"<<std::endl;
}
};
class DecoratorOne: public IComponent{
SPtr _component;
public:
DecoratorOne(SPtr& component): _component(component) {}
virtual void operation(){
std::cout<<", ";
_component->operation();
}
};
class DecoratorTwo: public IComponent{
SPtr _component;
public:
DecoratorTwo(SPtr& component): _component(component) {}
virtual void operation(){
std::cout<<"Hello";
_component->operation();
}
};
int main(){
IComponent::SPtr component(new Component);
DecoratorTwo obj(IComponent::SPtr(new DecoratorOne(component)));
obj.operation(); // prints "Hello, World!\n"
return 0;
}
помогите разобраться в паттерне декоратор
Чем помочь?