#include<iostream>
using namespace std;
class Component
{
public:
virtual void operation()
{
cout << "Component\n";
}
};
class Decorator: public Component
{
protected:
Component component;
public:
void setComponent(Component component)
{
this->component = component;
}
virtual void operation()
{
component.operation();
}
};
class ConcreteDecoratorA: public Decorator
{
public:
virtual void operation()
{
Decorator::operation();
cout << "ConcreteDecoratorA\n";
}
};
class ConcreteDecoratorB : public Decorator
{
public:
virtual void operation()
{
Decorator::operation();
cout << "ConcreteDecoratorB\n";
}
};
int main()
{
Component c;
ConcreteDecoratorA a;
ConcreteDecoratorB b;
a.setComponent(c);
b.setComponent(a);
b.operation();
return 0;
}
输出:
Component
ConcreteDecoratorB
为什么不会输出“ConcreteDecoratorA”呢?