结构型-外观模式
//外观模式:
/*就是将复杂的子类系统抽象到同一个接口进行管理,
外界只需要通过此接口与子类系统进行交互
而不必要直接与复杂的子类系统进行交互*/
#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;
}