zz facade模式

Facade模式

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

 

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

 

 

觀察者模式的結構

 

  

 

 

 Facade的幾個要點spa

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

 

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

 

 

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

 

 

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

 

 

 

 

 

適用性

 

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

 

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

 

  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();    }}

相關文章
相關標籤/搜索