設計模式(十):外觀模式
一、定義
為子系統中的一組接口提供一個一致的界面,用來訪問子系統中的一群接口。
外觀模式的實現核心主要是——由外觀類去保存各個子系統的引用,實現由一個統一的外觀類去包裝多個子系統類,然而客戶端只需要引用這個外觀類,然后由外觀類來調用各個子系統中的方法
二、實例
我們有兩個子系統
public class SubSystem_A { public void A() { Console.WriteLine("執行子系統SubSystem_A的A方法."); } } public class SubSystem_B { public void B() { Console.WriteLine("執行子系統SubSystem_B的B方法."); } }
以往在客戶端調用A系統和B系統需要各自實例化后,進行調用。然,客戶端和子系統的耦合加劇,所以我們使用外觀來解決這一問題。
外觀模式,就是外觀者維護子系統的引用并對子系統中的方法進行整理公開,供客戶端統一調用
外觀:
public class Facade { public SubSystem_A subA; public SubSystem_B subB; public Facade() { subA = new SubSystem_A(); subB = new SubSystem_B(); } public void Do_A() { subA.A(); } public void Do_B() { subB.B(); } }
圖例:
客戶端:
//-----------------------外觀模式------------------ Facade.Facade facade = new Facade.Facade(); facade.Do_A(); facade.Do_B(); Console.ReadKey();
三、優缺點
優:
- 外觀模式對客戶屏蔽了子系統組件,從而簡化了接口,減少了客戶處理的對象數目并使子系統的使用更加簡單。
- 外觀模式實現了子系統與客戶之間的松耦合關系,而子系統內部的功能組件是緊耦合的。松耦合使得子系統的組件變化不會影響到它的客戶。
缺:
1、如果增加新的子系統可能需要修改外觀類或客戶端的源代碼,這樣就違背了”開——閉原則“(哪能那么完美,這點不可避免)。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!