首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于装饰模式,tjvictor请进解决方案

2012-03-22 
关于装饰模式,tjvictor请进C/C++ code#include iostream#include stringusing namespace std// 要显

关于装饰模式,tjvictor请进

C/C++ code
#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;}


[解决办法]
探讨
这就是所说的依赖于抽象,不依赖于细节吧

热点排行