2_2 DecorateMode.cpp 装饰者模式
生活随笔
收集整理的這篇文章主要介紹了
2_2 DecorateMode.cpp 装饰者模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
// 定義:動(dòng)態(tài)的給一個(gè)對象添加額外的職責(zé)
//
// 模式舉例:有豐田和沃爾沃汽車,動(dòng)態(tài)的給這兩種汽車添加導(dǎo)航功能
// 自動(dòng)駕駛和語音控制功能
//
// 模式特點(diǎn):Function類繼承自Car同時(shí)又擁有Car類型指針
//
//#include<iostream>
using namespace std;class Car
{
public:virtual void showInfo()=0;
};class TOYOTA : public Car
{
public:virtual void showInfo(){cout <<"TOYOTA Car";}
};class VOLVO : public Car
{
public:virtual void showInfo(){cout <<"VOLVO Car";}
};//注意點(diǎn):此處重新showInfo,子類繼續(xù)重寫,但是子類的重寫調(diào)用父類的實(shí)現(xiàn)
class Function : public Car
{
public:virtual void showInfo(){m_car->showInfo();}void decorate(Car * car){m_car = car;}private:Car * m_car;
};class Navigator : public Function
{
public:virtual void showInfo(){cout << "增加導(dǎo)航功能-";Function::showInfo();}
};class VoiceControl : public Function
{
public:virtual void showInfo(){cout << "增加語音控制功能-";Function::showInfo();}
};class SelfDrive : public Function
{
public:virtual void showInfo(){cout << "增加自動(dòng)駕駛功能-";Function::showInfo();}
};int main()
{Car *pvolvoCar = new VOLVO();Function *pvoiceDecorate = new VoiceControl();pvoiceDecorate->decorate(pvolvoCar);Function *pautorunDecorate = new SelfDrive();pautorunDecorate->decorate(pvoiceDecorate);pautorunDecorate->showInfo();return 0;
}
?
總結(jié)
以上是生活随笔為你收集整理的2_2 DecorateMode.cpp 装饰者模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++设计模式之装饰模式
- 下一篇: 1_5 PrototypeMode 原型