装饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。
大概明白,还没想好怎么说明
#include <iostream> using namespace std; class Widget { public: virtual void draw() = 0; ~Widget(){} /* data */ }; class TextField : public Widget { public: TextField(int w, int h ): width(w), height(h){} ~TextField(); void draw() { cout << "TextField: " << width << ", " << height << endl; } /* data */ private: int width; int height; }; class Decorator : public Widget { public: Decorator( Widget *w ) { wid = w; } ~Decorator(){ delete wid; } void draw() { wid->draw(); } private: Widget *wid; /* data */ }; class BorderDecorator : public Decorator { public: BorderDecorator( Widget* w ) : Decorator( w ){ } ~BorderDecorator(); void draw() { Decorator::draw(); cout << "BorderDecorator" << endl; } /* data */ }; class ScrollDecorator : public Decorator { public: ScrollDecorator( Widget* w ) : Decorator( w ){} ~ScrollDecorator(); void draw() { Decorator::draw(); cout << "ScrollDecorator" << endl; } /* data */ }; int main() { Widget* aWidget = new BorderDecorator( new BorderDecorator( new ScrollDecorator( new TextField ( 80, 24 ) ) ) ); aWidget->draw(); delete aWidget; return 0; }