概述
外觀模式:爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
優點: 1、減少系統相互依賴。 2、提高靈活性。 3、提高了安全性。
缺點:不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適。
應用場景
降低訪問複雜系統的內部子系統時的複雜度,簡化客戶端與之的接口
一般步驟
1.寫多個子類且每個子類都有自己的方法;
class SubSystemOne
{
public:
void MethonOne()
{
cout << "子系統方法一" << endl;
}
};
class SubSystemTwo
{
public:
void MethonTwo()
{
cout << "子系統方法二" << endl;
}
};
2.另寫一個外觀類,實例化多個子類,且實現多個子類的方法組合。
class Facade // 外觀類-封裝了子系統的接口
{
private:
SubSystemOne *One;
SubSystemTwo *Two;
public:
Facade()
{
One = new SubSystemOne();
Two = new SubSystemTwo();
}
void MethonA()
{
cout << endl << "方法組A" << endl;
//...
}
void MethonB()
{
cout << endl << "方法組B" << endl;
//...
}
};
具體實例完整代碼
//08Facade.cpp
#include <iostream>
using namespace std;
class SubSystemOne
{
public:
void MethonOne()
{
cout << "子系統方法一" << endl;
}
};
class SubSystemTwo
{
public:
void MethonTwo()
{
cout << "子系統方法二" << endl;
}
};
class SubSystemThree
{
public:
void MethonThree()
{
cout << "子系統方法三" << endl;
}
};
class SubSystemFour
{
public:
void MethonFour()
{
cout << "子系統方法四" << endl;
}
};
class Facade // 外觀類-封裝了子系統的接口
{
private:
SubSystemOne *One;
SubSystemTwo *Two;
SubSystemThree *Three;
SubSystemFour *Four;
public:
Facade()
{
One = new SubSystemOne();
Two = new SubSystemTwo();
Three = new SubSystemThree();
Four = new SubSystemFour();
}
void MethonA()
{
cout << endl << "方法組A" << endl;
One->MethonOne();
Two->MethonTwo();
Four->MethonFour();
}
void MethonB()
{
cout << endl << "方法組B" << endl;
Two->MethonTwo();
Three->MethonThree();
}
};
int main()
{
Facade *facade = new Facade();
facade->MethonA();
facade->MethonB();
return 0;
}
參考資料
《大話設計模式》
如果對你有幫助的話,記得點贊、收藏,如果有什麼遺漏的或者有什麼體會,請在評論告訴我,好東西記得分享 ^ _ ^