Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。
角色和职责
Façade
为调用方, 定义简单的调用接口。
Clients(没有画出)
调用者。通过Facade接口调用提供某功能的内部类群。
Subsystem
功能提供者。指提供功能的类群(模块或子系统),他们之间功能相似。
适用于:
为子系统中统一一套接口,让子系统更加容易使用。
案例
#include <iostream>
using namespace std;
/*把所有的子系统包一层接口,方便客户使用
*把功能相近的子系统,类群包装成一套统一的接口
* 降低客户端和具体子系统的耦合
*/
class SubSystemA
{
public:
void doThing()
{
cout<<"System A run"<<endl;
}
};
class SubSystemB
{
public:
void doThing()
{
cout<<"System B run"<<endl;
}
};
class SubSystemC
{
public:
void doThing()
{
cout<<"System C run"<<endl;
}
};
/*包装成一个公共接口--外观统一*/
class Facade
{
public:
Facade()
{
sysA = new SubSystemA;
sysB = new SubSystemB;
sysC = new SubSystemC;
}
~Facade()//注意回收内存
{
delete sysA;
delete sysB;
delete sysC;
}
void doThing()
{
sysA->doThing();
sysB->doThing();
sysC->doThing();
}
private:
SubSystemA *sysA ;
SubSystemB *sysB ;
SubSystemC *sysC ;
};
/*测试案例*/
int main269()
{
Facade * f = new Facade;
f->doThing();
return 0;
}