装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者模型比生成子类更为灵活。
using namespace std; //"Person"类(concretetcomponent) class Person { public: virtual void show(){} }; //服饰类(Decorator) class Finery :public Person { protected: Person *component; public: void Decorate(Person *components) { component = components; } void show() { if(component!=NULL) component->show(); } }; //具体装饰类(ConcreteDecorator) class TShirts :public Finery { public: void show() { cout << "大T恤" << endl; component->show(); } }; class Trouser :public Finery { public: void show() { cout << "裤子哦" << endl; component->show(); } }; class Skirt :public Finery { public: void show() { cout << "裙子吗" << endl; component->show(); } }; int main() { Person* x = new Person(); cout << "第一种装扮:" << endl; TShirts *t = new TShirts(); Trouser *T = new Trouser(); Skirt *S = new Skirt(); T->Decorate(x); t->Decorate(T); S->Decorate(t); S->show(); delete[] x; delete[] t; delete[] T; delete[] S; return 0; }