Facade模式[fəˈsɑːd]

Facade模式要求一個子系統的外部與其內部的通訊必須經過一個統一的Facade對象進行。Facade模式提供一個高層次的接口,使得子系統更易於使用。  java

   就如同醫院的接待員同樣,Facade模式的Facade類將客戶端與子系統的內部複雜性分隔開,使得客戶端只須要與Facade對象打交道,而不須要與子系統內部的不少對象打交道。   設計模式

 觀察者模式的結構架構

   

 

  Facade的幾個要點spa

  從客戶程序的角度來看,Facade模式不只簡化了整個組件系統的接口,同時對於組件內部與外部客戶程序來講,從某種程度上也達到了一種「解耦」的效果——內部子系統的任何變化不會影響到Façade接口的變化。  架構設計

    Façade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。Façade不少時候更是一種架構設計模式。 設計

    Façade設計模式並不是一個集裝箱,能夠任意地放進任何多個對象。Façade模式中組件的內部應該是「相互耦合關係比較大的一系列組件」,而不是一個簡單的功能集合。  code

   注意區分Façade模式、Adapter模式、Bridge模式與Decorator模式。Façade模式注重簡化接口,Adapter模式注重轉換接口,Bridge模式注重分離接口(抽象)與其實現,Decorator模式注重穩定接口的前提下爲對象擴展功能。orm

 適用性對象

   1.爲一個複雜子系統提供一個簡單接口。接口

   2.提升子系統的獨立性。

   3.在層次化結構中,能夠使用Facade模式定義系統中每一層的入口。

 Facade模式的模型

  A系統有A1, A2, A3等類。客戶端須要調用A系統的的A1.doSomething1();A2.doSomething2();A3.doSomething3()來完成某功能。
Facade模式的實現模型就是:

A系統:

class A1 {
    public void doSomething1();
}

class A2 {
    public void doSomething2();
}

class A3 {
    public void doSomething3();
}

Facade:

public class Facade {
    public void doSomething() {
        A1 a1 = new A1();
        A1 a2 = new A2();
        A1 a3 = new A3();
 
        a1.doSomething1();
        a2.doSomething2();
        a3.doSomething3();
    }
}

Test:

public class Client {
    public static void main(String []args) {
        Facade facade = new Facade();
        facade.doSomething();
    }
}
相關文章
相關標籤/搜索