装饰模式
1.装饰模式
装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。
2.装饰模式的优点
装饰者模式动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。
3.装饰模式的简单实现
让跑车飞起来。
#include<iostream> using namespace std; class Car { public: virtual void show() = 0; }; class Runcar:public Car { public: void run() { cout << "run" << endl; } virtual void show() { run(); } }; class Flycar :public Car { public: Flycar(Car * p) { m_p = p; } void fly() { cout << "fly" << endl; } virtual void show() { m_p->show(); fly(); } private: Car * m_p; }; int main() { Runcar * runCar = new Runcar; runCar->show(); //给runCar添加飞行功能 printf("==========\n"); Flycar * flyCar = new Flycar(runCar); flyCar->show(); delete runCar; delete flyCar; system("pause"); return 0; }