装饰器模式主要是增加现有类的方法,通过指针传递参数调用其对应的功能。
class car
{
public:
virtual void show() = 0;
};
class Bmw :public car
{
public:
void show()
{
cout << "bmw基本配置:" << endl;
}
};
class audi :public car
{
public:
void show()
{
cout << "audi基本配置:" << endl;
}
};
class benci :public car
{
public:
void show()
{
cout << "benci基本配置:" << endl;
}
};
//装饰器的基类
class carDecorator:public car
{
public:
carDecorator(car *pcar):p(pcar)
{
}
private:
car *p;
};
//装饰器1
class Dec1 :public car
{
public:
Dec1(car *pcar):p(pcar){}
void show()
{
p->show();
cout << "定速巡航" << endl;
}
private:
car *p;
};
//装饰器2
class Dec2 :public car
{
public:
Dec2(car *pcar) :p(pcar) {}
void show()
{
p->show();
cout << "弹射起步" << endl;
}
private:
car *p;
};
int main()
{
car *p1 = new Dec1(new Bmw());
p1->show();
car *p2 = new Dec2(p1);
p2->show();
return 0;
}