您的位置:首页 > 编程语言 > C语言/C++

23种设计模式C++实例之装饰模式

2015-12-16 10:58 537 查看
装饰模式就是在不改变原有的类的情况下,给它添加功能。

#include <iostream>

using namespace std;

/*
* 装饰模式:在不改变原类和使用继承的情况下,对类进行功能的增强
* 对类a功能的增强
* */

class Car {
public:
virtual ~Car() {}
virtual void go() = 0;
};

class RunCar: public Car {
public:
virtual void go() {
cout << "car can run" << endl;
}
};

class FlyCar: public Car {
public:
FlyCar(Car* car) {
m_car = car;
}
virtual void go() {
m_car->go();
fly();
}
void fly() {
cout << "car can fly" << endl;
}
private:
Car* m_car;
};

class SwimCar: public Car {
public:
SwimCar(Car* car) {
m_car = car;
}
virtual void go() {
m_car->go();
swim();
}
void swim() {
cout << "car can swim" << endl;
}
private:
Car* m_car;
};

int main() {
Car* run = NULL;
run = new RunCar();
run->go();
cout << endl;

FlyCar* fly = new FlyCar(run);
run->go();
cout << endl;

SwimCar* swim = new SwimCar(fly);
swim->go();
cout << endl;

delete swim;
delete fly;
delete run;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: