定义
装饰模式是通过对客户端透明的方式来扩展对象的功能,是继承关系的替代方案。
装饰模式把附加功能放到一个单独的类中,这个类包含要装饰的对象,当要使用时,客户端可以有选择地、按顺序执行装饰功能。
装饰模式可以动态添加功能,比生成字类更加灵活。
示例
class Car
{
public:
virtual void show() = 0;
};
class RunCar:public Car
{
public:
virtual void show()
{
cout<<"car can run."<<endl;
}
};
class FastCar:public Car
{
public:
FastCar(Car* car)
{
m_car = car;
}
virtual void show()
{
m_car->show();
cout<<"car can run fastly."<<endl;
}
private:
Car* m_car;
};
int main(int argc, char *argv[]) {
RunCar* runCar = new RunCar();
FastCar* fastCar = new FastCar(runCar);
fastCar->show();
delete runCar;
delete fastCar;
}