#include<iostream>
using namespace std;
class Car {
public:
virtual void show() = 0;
};
class BMW : public Car{
public:
BMW(){}
void show() {
cout << "这量BMW车的基本配置:" ;
}
};
class AUDI : public Car {
public:
void show() {
cout << "这量AUDI车的基本配置:" ;
}
};
class BENCHI : public Car {
public:
void show() {
cout << "这量BENCHI车的基本配置:";
}
};
/// <summary>
///可以写一个装饰器基类 写装饰器的公共的方法
/// </summary>
/// <returns></returns>
class ConcreteDecorator01 : public Car
{
public:
ConcreteDecorator01(Car* p) :pCar(p) {
}
void show() {
pCar->show();
cout << ",定速巡航";
}
private:
Car* pCar;
};
class ConcreteDecorator02 : public Car
{
public:
ConcreteDecorator02(Car* p) :pCar(p) {
}
void show() {
pCar->show();
cout << ",自动刹车";
}
private:
Car* pCar;
};
int main() {
Car* p1 = new ConcreteDecorator01(new BMW());
p1 = new ConcreteDecorator02(p1);
p1->show();
cout << endl;
Car* p2 = new ConcreteDecorator01(new AUDI());
p2->show();
return 0;
}
设计模式-装饰器模式
最新推荐文章于 2024-10-17 10:46:25 发布