參考 大話設計模式
定義:為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。
使用時機:
1.系統設計初期階段,三層式架構中層與層之間建立 Facade
2.開發階段,子系統的不斷演化,會產生許多的小類別,造成用戶程式調用難度,此時可以加入 Facade ,建立簡單的介面,減少依賴
3.在維護一個遺留的大型系統時,也許是個棕地,已經非常難以維護和擴展了,但又不能棄之不理,因為還有點賺頭 XD ;
用 Facade 將難用的舊系統大包,提供比較清晰簡單的介面,讓新系統與 Facade 互動,Facade 與舊系統的程式碼溝通。
結構圖:來源
說明:
Facade:外觀類別,知道哪些子系統負責處理請求,將客戶的請求代理給適當的子系統物件
SubSystem:處理 Facade 物件指派的任務
程式碼:
class Program { static void Main(string[] args) { Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); Console.Read(); } } /// <summary> /// 子系統類別一。 /// </summary> class SubSystemOne { public void MethodOne() { Console.WriteLine(" 子系統方法一"); } } /// <summary> /// 子系統類別二。 /// </summary> class SubSystemTwo { public void MethodTwo() { Console.WriteLine(" 子系統方法二"); } } /// <summary> /// 子系統類別三。 /// </summary> class SubSystemThree { public void MethodThree() { Console.WriteLine(" 子系統方法三"); } } /// <summary> /// 子系統類別四。 /// </summary> class SubSystemFour { public void MethodFour() { Console.WriteLine(" 子系統方法四"); } } /// <summary> /// 外觀類別。 /// </summary> class Facade { //宣告子系統變數 SubSystemOne one; SubSystemTwo two; SubSystemThree three; SubSystemFour four; /// <summary> /// 建構函式。 /// </summary> public Facade() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); four = new SubSystemFour(); } /// <summary> /// 開放對外 methodA。 /// </summary> public void MethodA() { Console.WriteLine("\n方法組A() ---- "); one.MethodOne(); two.MethodTwo(); four.MethodFour(); } /// <summary> /// 開放對外 methodB。 /// </summary> public void MethodB() { Console.WriteLine("\n方法組B() ---- "); two.MethodTwo(); three.MethodThree(); } }
Design Pattern: Facade 模式
Facade
wiki Facade pattern
設計模式之Facade(外觀) 板橋里人
0 Comments:
張貼留言