設計模式(十):外觀模式

jopen 8年前發布 | 8K 次閱讀 外觀模式

一、定義

為子系統中的一組接口提供一個一致的界面,用來訪問子系統中的一群接口。

外觀模式的實現核心主要是——由外觀類去保存各個子系統的引用,實現由一個統一的外觀類去包裝多個子系統類,然而客戶端只需要引用這個外觀類,然后由外觀類來調用各個子系統中的方法

二、實例

我們有兩個子系統

 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. 外觀模式對客戶屏蔽了子系統組件,從而簡化了接口,減少了客戶處理的對象數目并使子系統的使用更加簡單。
  2. 外觀模式實現了子系統與客戶之間的松耦合關系,而子系統內部的功能組件是緊耦合的。松耦合使得子系統的組件變化不會影響到它的客戶。

缺:

1、如果增加新的子系統可能需要修改外觀類或客戶端的源代碼,這樣就違背了”開——閉原則“(哪能那么完美,這點不可避免)。

來自: http://www.cnblogs.com/sunchong/p/5126155.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!