原理:
外觀模式(Facade Pattern)隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的接口。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個接口,來隱藏系統的複雜性。
這種模式涉及到一個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委託調用。
意圖:
爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
主要解決:
降低訪問複雜系統的內部子系統時的複雜度,簡化客戶端與之的接口。
應用實例:
去醫院看病,可能要去掛號、門診、劃價、取藥,讓患者或患者家屬覺得很複雜,如果有提供接待人員,只讓接待人員來處理,就很方便。
代碼
Prpgram.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 外觀模式
{
class Program
{
static void Main(string[] args)
{
Facade fa = new Facade();
fa.MethodA();
fa.MethodB();
Console.ReadKey();
}
}
}
Facade.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 外觀模式
{
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine("子系統方法一");
}
}
class SubSystemTwo
{
public void MethodTwo()
{
Console.WriteLine("子系統方法二");
}
}
class SubSystemThree
{
public void MethodThree()
{
Console.WriteLine("子系統方法三");
}
}
class SubSystemFour
{
public void MethodFour()
{
Console.WriteLine("子系統方法四");
}
}
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("\n 方法組A() ---- ");
one.MethodOne();
two.MethodTwo();
four.MethodFour();
}
public void MethodB()
{
Console.WriteLine("\n 方法組B() ---- ");
two.MethodTwo();
three.MethodThree();
}
}
}
參考
參考書籍:《大話設計模式》
參考鏈接: 菜鳥教程.