設計模式系列
外觀模式:專門給子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高階接口,這個
接口使得這一系列子系統更加容易使用。
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.MethodA();
facade.MethodB();
}
}
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine("SubSystemOne Method");
}
}
class SubSystemTwo
{
public void MethodTwo()
{
Console.WriteLine("SubSystemTwo Method");
}
}
class SubSystemThree
{
public void MethodThree()
{
Console.WriteLine("SubSystemThree Method");
}
}
class SubSystemFour
{
public void MethodFour()
{
Console.WriteLine("SubSystemFour Method");
}
}
class Facade
{
SubSystemOne one;
SubSystemTwo two;
SubSystemThree three;
SubSystemFour four;
public Facade()
{
one = new SubSystemOne();
two = new SubSystemTwo();
three = new SubSystemThree();
four = new SubSystemFour();
}
public void MethodA()
{
Console.WriteLine("\nMethodA()");
one.MethodOne();
two.MethodTwo();
four.MethodFour();
}
public void MethodB()
{
Console.WriteLine("\nMethodB()");
two.MethodTwo();
three.MethodThree();
}
}
優點:
1.對客戶端隱藏子系統組件,減少客戶的處理對象數目,使得子系統使用更加容易。
2.實現子系統與客戶端得之間低偶合關係,使得子系統變化,不會影響到調用的客戶端類別,只需調整
外觀類別即可。
3.降低大型系統的依賴性,簡化系統不同平台移植過程。
4.提供一個訪問子系統統一入口,不影響用戶直接使用子系統類。
缺點:
1.不能很好的限制客戶使用子系統類,如果客戶端訪問子系統類做太多限制,減少了可變性和靈活性。
2.增加子系統可能需要修改外觀類別或客戶端程式碼,違背OCP原則
使用場景:
1.為複雜模組或子系統提供外界訪問的模組區塊
2.子系統相互獨立
3.可以使用外觀模式定義系統每一層入口
元哥的筆記