什么是外观模式
外观模式就是将一个复杂的子类系统抽象到同一个接口进行管理
外界只需要通过此接口与子类系统进行交互,不需要直接与复杂的子类系统进行交互
外观模式属于结构型模式
外观模式案例
1、实现KTV模式:打开电视,关灯,音响打开,麦克风打开,dvd打开
2、实现游戏模式:电视打开,音响打开,游戏机打开
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 Mircophone
{
public:
void on(){
cout << "打开麦克风" << endl;
}
void off(){
cout << "关闭麦克风" << endl;
}
};
class DVDplayer
{
public:
void on(){
cout << "打开DVD" << endl;
}
void off(){
cout << "关闭DVD" << endl;
}
};
class Gamechine
{
public:
void on(){
cout << "打开游戏机" << endl;
}
void off(){
cout << "关闭游戏机" << endl;
}
};
class KTVMode
{
public:
KTVMode(){
pTv = new Television;
pLight = new Light;
pAudio = new Audio;
pMi = new Mircophone;
pDVD = new DVDplayer;
}
~KTVMode(){
delete pTv;
delete pLight;
delete pAudio;
delete pMi;
delete pDVD;
}
void OnKtv(){
pTv->on();
pLight->on();
pAudio->on();
pMi->on();
pDVD->on();
}
void OffKtv(){
pTv->off();
pLight->off();
pAudio->off();
pMi->off();
pDVD->off();
}
public:
Television * pTv;
Light * pLight;
Audio * pAudio;
Mircophone* pMi;
DVDplayer* pDVD;
};
class GameMode
{
public:
GameMode(){
pTv = new Television;
pAudio = new Audio;
pGame = new Gamechine;
}
~GameMode(){
delete pTv;
delete pAudio;
delete pGame;
}
void OnGame(){
pTv->on();
pAudio->on();
pGame->on();
}
void OffGame(){
pTv->off();
pAudio->off();
pGame->off();
}
public:
Television * pTv;
Audio * pAudio;
Gamechine* pGame;
};
void test01(){
KTVMode* sp1 = new KTVMode();
sp1->OnKtv();
sp1->OffKtv();
cout << "------------------------------" << endl;
GameMode* sp2 = new GameMode();
sp2->OnGame();
sp2->OffGame();
delete sp1;
delete sp2;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)