--来自《设计模式:可复用面向对象软件的基础》
目的
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。
Class VisualComponent
{
Public:
VisualComponent();
Virtual void Draw();
Virtual void Resize();
};
Class Decorator : public VisualComponent
{
Public:
Decorator(VisualComponent*);
Virtual void Draw();
Virtual void Resize();
};
Void Decorator::Draw()
{
Return _component->Draw();
};
Void Decorator::Resize()
{
Return _component->Resize();
};
Class BorderDecorator : public Decorator
{
Public:
BorderDecorator (VisualComponent*, int borderWidth);
Virtual void Draw();
Private:
void DrawBorder(int);
Private:
Int _width;
};
Void BorderDecorator::Draw()
{
Decorator::Draw();
DrawBorder(_width);
}