关于装饰模式,tjvictor请进
#include <iostream>#include <string>using namespace std;// 要显示车的接口__interface IShowHandle{ void Show() = NULL;};// 我的小车类class CMyCar : public IShowHandle{public: CMyCar(string strName); // 显示我的小车 virtual void Show(); private: // 车名 string m_strCarName;};CMyCar::CMyCar(string strName){ m_strCarName = strName;}// 如何显示void CMyCar::Show(){ cout << "我的小车 " << m_strCarName << endl;}// 到此,我要给我的小车加上ABS防抱死系统// 定义一个装饰类Decorateclass CDecorate : public IShowHandle{public: // 构造函数 CDecorate(IShowHandle *pICar); virtual void Show();protected: IShowHandle * m_pIMyCar; // 要装饰的小车};// 装饰类构造函数CDecorate::CDecorate(IShowHandle *pICar){ m_pIMyCar = pICar;}// 显示我的小车void CDecorate::Show(){ // 如果我的小车存在 if (m_pIMyCar != NULL) { m_pIMyCar->Show(); }}// 现在给我的小车加上ABS防抱死系统class CABSSystem : public CDecorate{public: CABSSystem(IShowHandle *pICar); virtual void Show();};// 构造函数CABSSystem::CABSSystem(IShowHandle *pICar) : CDecorate(pICar){}void CABSSystem::Show(){ cout << "具有ABS防抱死系统" << endl; m_pIMyCar->Show();}// 再给我小的车加上倒车雷达功能class CRader : public CDecorate{public: CRader(IShowHandle *pICar); virtual void Show();};// 构造函数CRader::CRader(IShowHandle *pICar) : CDecorate(pICar){}void CRader::Show(){ cout << "具有ABS防抱死系统" << endl; m_pIMyCar->Show();}int main(){ // 生产小车 IShowHandle * pICar = new CMyCar("法拉利"); // 开始装饰 IShowHandle * pDecorate = new CRader(pICar); pDecorate->Show(); return 0;}