装饰模式

来源:互联网 发布:厦门三套网络电视台 编辑:程序博客网 时间:2024/06/04 04:39

1、概念:也叫做包装模式,通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。

           装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含他要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。

2、试用范围:

装饰模式动态的给一个对象添加一些额外的职责。就增加功能来说。此模式比生成子类更灵活。

3、代码示例:

#include<iostream>using namespace std;class Car{public:virtual void show() = 0;};class RunCar:public Car{public:virtual void show(){cout << "可以跑" << endl;}};class SwimCar:public Car{public:SwimCar(Car* car){m_car = car;}void swim(){cout << "可以游泳" << endl;}virtual void show(){m_car->show();swim();}private:Car* m_car;};class FlyCar :public Car{public:FlyCar(Car*car){m_car = car;}void Fly(){cout << "可以飞" << endl;}virtual void show(){m_car->show();Fly();}private:Car *m_car;};int main(void){Car *car = NULL;car = new RunCar;car->show();cout<< endl;SwimCar *sw = new SwimCar(car);sw->show();cout << endl;FlyCar *fc = new FlyCar(sw);fc->show();delete sw;delete fc;return 0;}


原创粉丝点击