介绍
“用一句话说明就是分层设计,为复杂的模块套个壳~“”
意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。
何时使用:
1、设计初期阶段,有意识得将不同的两个层分离,比如经典的三层结构......
2、开发阶段,子系统因为不断的重构演化而变得越来越复杂,产生了很多的很小的类,这种情况下,增加外观 Facade可以提供简单的接口减少依赖。
3、维护遗留的大型系统的时候,原有代码不好改变,设计一个外观Facade类,让新系统与Facade交互
#include <iostream>
using namespace std;
class SubSystemA
{
public:
void doThing()
{
cout << "SubSystemA run" << endl;
}
};
class SubSystemB
{
public:
void doThing()
{
cout << "SubSystemB run" << endl;
}
};
class SubSystemC
{
public:
void doThing()
{
cout << "SubSystemC run" << endl;
}
};
class Facade
{
public:
Facade()
{
sysA = new SubSystemA;
sysB = new SubSystemB;
sysC = new SubSystemC;
}
~Facade()
{
delete sysA;
delete sysB;
delete sysC;
}
public:
void doThing()
{
sysA->doThing();
sysB->doThing();
sysC->doThing();
}
private:
SubSystemA *sysA;
SubSystemB *sysB;
SubSystemC *sysC;
};
void main1()
{
SubSystemA *sysA = new SubSystemA;
SubSystemB *sysB = new SubSystemB;
SubSystemC *sysC = new SubSystemC;
sysA->doThing();
sysB->doThing();
sysC->doThing();
delete sysA;
delete sysB;
delete sysC;
return;
}
void main2()
{
Facade *f = new Facade;
f->doThing();
delete f;
}
void main()
{
//main1();
main2();
system("pause");
}