外观模式(Facade):根据迪米特法则,如果两个类不必彼此之间通信,那么这两个类就不应当发生相互作用
class TV{
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 GameMachine{
public:
void On(){
cout << "游戏机打开" <<endl;
}
void Off(){
cout << "游戏机关闭" <<endl;
}
};
class DVD{
public:
void On(){
cout << "DVD打开" <<endl;
}
void Off(){
cout << "DVD关闭" <<endl;
}
};
class KTVmode{
public:
KTVmode(){
pTV = new TV;
pLight = new Light;
pAudio = new Audio;
pDVD = new DVD;
}
void KTVon(){
cout << "ktv模式已开启"<<endl;
pTV->On();
pLight->Off();
pAudio->On();
pDVD->On();
}
void KTVoff(){
cout << "ktv模式已关闭"<<endl;
pTV->Off();
pLight->On();
pAudio->Off();
pDVD->Off();
}
~KTVmode(){
delete pTV;
delete pLight;
delete pAudio;
delete pDVD;
}
public:
TV* pTV;
Light* pLight;
Audio* pAudio;
DVD* pDVD;
};
int main(){
KTVmode* ktv = new KTVmode;
ktv->KTVon();
ktv->KTVoff();
delete ktv;
return 0;
}