外觀模式c#
爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用.
設計模式
例子(引用於大話設計模式)架構
子系統類代碼以下:
spa
class SubSystemOne { public void MethodOne() { Console.WriteLine("子系統方法一"); } } class SubSystemTwo { public void MethodTwo() { Console.WriteLine("子系統方法二"); } } class SubSystemThree { public void MethodThree() { Console.WriteLine("子系統方法三"); } }
外觀類將子系統的方法加以組合,代碼以下:
設計
class Facade { SubSystemOne one; SubSystemTwo two; SubSystemThree three; public Facade() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); } public void MethodA() { Console.WriteLine("\n方法組A() ----"); one.MethodOne(); two.MethodTwo(); } public void MethodB() { Console.WriteLine("\n方法組B() ----"); three.MethodThree(); } }
客戶端能夠直接引用外觀類代碼,而沒必要接觸到實際的子系統部分,示例代碼以下:
code
class Program { static void Main(string[] args) { Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); Console.Read(); } }
3. 適用狀況對象
外觀模式在面向對象的開發當中很是經常使用。
接口
1) 在設計初期階段,若是利用經典的三層架構,就須要考慮在數據訪問層和業務邏輯層、業務邏輯層和表示層的層與層之間創建外觀Facade,能夠爲複雜的子系統提供一個簡單的接口,下降了耦合度。
three
2)在開發階段,子系統常常會由於不斷的重構演化變得愈來愈複雜,會產生不少細小的類,給外部調用他們的用戶程序帶來了困難。使用外觀模式能夠提供一個簡單的接口。
開發
3)在維護一個大型的遺留程序時,若是這個系統已經很是難以維護和擴展,但它又包含着重要的功能。此時也能夠用外觀模式,爲設計粗糙或者高度複雜的遺留代碼提供一個簡單的接口。讓新系統與Facade交互,Facade與遺留代碼交互全部複雜的工做。