装饰器模式主要是增加现有类的方法,通过指针传递参数调用其对应的功能。
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;
}
这篇博客介绍了装饰器模式在汽车类中的应用,通过创建不同的装饰器类(Dec1 和 Dec2),为 BMW 基础车型增加了定速巡航和弹射起步功能。在主函数中展示了如何使用装饰器动态组合功能,增强了汽车类的行为。
173万+

被折叠的 条评论
为什么被折叠?



