外观模式是一种结构型模式,是23种GOF设计模式之一。外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
下面是一个例子:
#include <iostream>
using namespace std;
// 灯光
class Light
{
public:
void On() { cout << "开灯。\n"; }
void Off() { cout << "关灯。\n"; }
};
// 音响
class Sound
{
public:
void On() { cout << "启动音响设备。\n"; }
void Off() { cout << "关闭音响设备。\n"; }
};
// 投影仪
class Projector
{
public:
void On() { cout << "启动投影仪。\n"; }
void Off() { cout << "关闭投影仪。\n"; }
};
// 电影
class Movie
{
public:
void Start() { cout << "开始播放电影。\n"; }
void End() { cout << "结束播放电影。\n"; }
};
// 电影院模式
class CinemamMode
{
public:
// 构造函数,创建对象
CinemamMode()
{
light = new Light();
sound = new Sound();
projector = new Projector();
movie = new Movie();
}
// 开启电影院模式
void OnCinema()
{
light->Off(); // 关灯
sound->On(); // 开启音响设备
projector->On();// 启动投影仪
movie->Start(); // 开始播放电影
}
// 关闭电影院模式
void OffCinema()
{
light->On(); // 开灯灯
sound->Off(); // 关闭音响设备
projector->Off();// 关闭投影仪
movie->End(); // 结束播放电影
}
// 析构函数,释放内存
~CinemamMode()
{
delete light;
delete sound;
delete projector;
delete movie;
}
public:
Light * light; // 灯
Sound * sound; // 音响设备
Projector * projector; // 投影仪
Movie * movie; // 电影
};
void main()
{
CinemamMode * cinemaMode = new CinemamMode();
cout << "电影院模式开启:" << endl;
cinemaMode->OnCinema(); // 开启电影院模式
cout << "----------------------------" << endl;
cout << "电影院模式关闭:" << endl;
cinemaMode->OffCinema(); // 关闭电影院模式
}
运行结果:
感谢您的浏览。