设计模式-外观模式

结构型-外观模式

//外观模式:
/*就是将复杂的子类系统抽象到同一个接口进行管理,
外界只需要通过此接口与子类系统进行交互
而不必要直接与复杂的子类系统进行交互*/

#include <iostream>
using namespace std;

//电视机
class Television{
public:
    void On(){
        cout << "电视机打开..." << endl;
    }
    void Off(){
        cout << "电视机关闭..." << endl;
    }
};

//灯
class Light{
public:
    void On(){
        cout << "灯打开..." << endl;
    }
    void Off(){
        cout << "灯关闭..." << endl;
    }
};

//音响
class Audio{
public:
    void On(){
        cout << "音响打开..." << endl;
    }
    void Off(){
        cout << "音响关闭..." << endl;
    }
};

//麦克风
class Mircopphone{
public:
    void On(){
        cout << "麦克风打开..." << endl;
    }
    void Off(){
        cout << "麦克风关闭..." << endl;
    }
};

//DVD播放器
class DVDPlayer{
public:
    void On(){
        cout << "DVD播放器打开..." << endl;
    }
    void Off(){
        cout << "DVD播放器关闭..." << endl;
    }
};

//游戏机
class Gamemachine{
public:
    void On(){
        cout << "游戏机打开..." << endl;
    }
    void Off(){
        cout << "游戏机关闭..." << endl;
    }
};

class KTVMode{
public:
    KTVMode(){
       pTv = new Television;
       pLight = new Light;
       pAudio = new Audio;
       pMircopphone = new Mircopphone;
       pDvd = new DVDPlayer;
    }

    void OnKTV(){
        pTv->On();
        pLight->On();
        pAudio->On();
        pMircopphone->On();
        pDvd->On();
    }
    void OffKTV(){
        pTv->Off();
        pLight->Off();
        pAudio->Off();
        pMircopphone->Off();
        pDvd->Off();
    }

    ~KTVMode(){
       delete pTv;
       delete pLight;
       delete pAudio;
       delete pMircopphone;
       delete pDvd;
    }
public:
    Television* pTv;
    Light* pLight;
    Audio* pAudio;
    Mircopphone* pMircopphone;
    DVDPlayer* pDvd;
};

void test01(){
    KTVMode* ktv = new KTVMode;
    ktv->OnKTV();
}

int main()
{
    test01();


    system("pause");
    return 0;
}
posted @ 2023-10-14 19:29  洋綮  阅读(3)  评论(0)    收藏  举报