外观模式结构图
意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。
其中:
- Facade知道哪些子系统类负责处理请求;将客户的请求代理给适当的子系统对象。
- Subsystem classes 实现子系统的功能;处理有Facade对象指派的任务;没有Facade的任何相关消息,即没有指向Facade的指针。
应用举例
一天的生活状态
#include <iostream>
#include <string>
#include <list>
using namespace std;
//起床
class WakeUp
{
public:
void show() { cout << "WakeUp" << endl; }
};
//上班
class Work
{
public:
void show() { cout << "Work" << endl; }
};
//睡觉
class Sleep
{
public:
void show() { cout << "Sleep" << endl; }
};
class DayLife
{
public:
void show()
{
wu.show();
wo.show();
sp.show();
}
private:
WakeUp wu;
Work wo;
Sleep sp;
};
int main()
{
DayLife d;
d.show();
getchar();
return 0;
}
适用性
1、为复杂的模块或子系统提供外界访问的模块。
2、子系统相对独立。
3、预防低水平人员带来的风险。