1. 外观模式
定义:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。
打开家里各种智能设备,研发者只需要提供几种简单选择给用户即可(而非暴露所有的电子特性)
类图:

2. 示例代码
#include <iostream>
#include <string>
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 Mircophone {
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;
}
};
//KTV模式
class KTVMode {
public:
KTVMode() {
pTv = new Television;
pLight = new Light;
pAudio = new Audio;
pMicrophone = new Mircophone;
pDvd = new DVDPlayer;
}
void OnKtv() {
pTv->On();
pLight->Off();
pAudio->On();
pMicrophone->On();
pDvd->On();
}
void OffKtv() {
pTv->Off();
pLight->On();
pAudio->Off();
pMicrophone->Off();
pDvd->Off();
}
~KTVMode() {
delete pTv;
delete pLight;
delete pAudio;
delete pMicrophone;
delete pDvd;
}
Television* pTv;
Light* pLight;
Audio* pAudio;
Mircophone* pMicrophone;
DVDPlayer* pDvd;
};
void test01() {
KTVMode* ktv = new KTVMode;
ktv->OnKtv();
}
int main() {
test01();
return 0;
}
670

被折叠的 条评论
为什么被折叠?



