介紹
“用一句話說明就是分層設計,爲複雜的模塊套個殼~“”
意圖:爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
主要解決:降低訪問複雜系統的內部子系統時的複雜度,簡化客戶端與之的接口。
何時使用:
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");
}