为子系统中的一组接口提供一个一致的界面。
定义了一个高层接口,这个接口使得这一子系统更加容易使用
应用场景
- 实现平台无关性。跨平台跨库的函数调用。
- 同一个接口去读取不同的资源。
- 硬件自动识别处理系统。
类图
参与者
- Facade
知道哪些子系统类负责处理请求
将客户的请求代理给适当的子系统对象 - Subsystem classes
实现子系统的功能
处理由Facade对象指派的任务
没有Facade的任何相关信息:即没有指向Facade的指针
代码
#include <iostream>
using namespace std;
class SubSystemA
{
public:
void FunctionA()
{
cout<<"调用子系统A方法"<<endl;
}
};
class SubSystemB
{
public:
void FunctionB()
{
cout<<"调用子系统B方法"<<endl;
}
};
class SubSystemC
{
public:
void FunctionC()
{
cout<<"调用子系统C方法"<<endl;
}
};
class Facade
{
private:
SubSystemA *pSubSA;
SubSystemB *pSubSB;
SubSystemC *pSubSC;
public:
void MethodA()
{
cout<<"方法组:----"<<endl;
pSubSA->FunctionA();
pSubSB->FunctionB();
}
void MethodB()
{
cout<<"方法组:----"<<endl;
pSubSA->FunctionA();
pSubSC->FunctionC();
}
};
int main()
{
Facade *pFacade = new Facade();
pFacade->MethodA();
pFacade->MethodB();
return 0;
}