JAVA 設計模式 外觀模式

用途html


外觀模式 (Facade)
爲子系統中的 一組接口提供一個一致的界面,此模式定義了 一個高層接口,這個接口使得這一子系統更加容易使用。
外觀模式是一種 結構型模式


結構

圖-外觀模式結構圖設計模式

Facade : 瞭解每一個子系統類的功能,負責分發客戶端的請求給各個子系統去處理。
class Class1 {
     public  void op1() {
        System.out.println("方法1");
    }
}

class Class2 {
     public  void op2() {
        System.out.println("方法2");
    }
}

class Class3 {
     public  void op3() {
        System.out.println("方法3");
    }
}
Subsystem Classes : 實現子系統功能。在不感知 Facade 的狀況下,處理 Facade 對象分配的工做,
class Facade {
     private Class1 one =  new Class1();
     private Class2 two =  new Class2();
     private Class3 three =  new Class3();
    
     public  void op1() {
        System.out.println("Facade op1()");
        one.op1();
    }
    
     public  void op2() {
        System.out.println("Facade op2()");
        two.op2();
    }
    
     public  void op3() {
        System.out.println("Facade op3()");
        three.op3();
    }
    
     public  void Method() {
        System.out.println("Facade Method()");
        three.op3();
        two.op2();
        one.op1();
    }
}

測試代碼架構

public  class FacadePattern {
     public  static  void main(String[] args) {
        Facade facade =  new Facade();
        facade.Method();
        
        facade.op1();
    }
}

運行結果測試

Facade Method()
方法3
方法2
方法1
Facade op1()
方法1


 

要點

一、外觀模式爲複雜子系統提供了一個簡單接口,並不爲子系統添加新的功能和行爲。
spa

二、外觀模式實現了子系統與客戶之間的鬆耦合關係。
設計

三、外觀模式沒有封裝子系統的類,只是提供了簡單的接口。 若是應用須要,它並不限制客戶使用子系統類。所以能夠再系統易用性與通用性之間選擇。
code

四、外觀模式注重的是簡化接口,它更多的時候是從架構的層次去看整個系統,而並不是單個類的層次。
htm



推薦

本文屬於 JAVA設計模式系列
對象



參考資料

《大話設計模式》blog

《HeadFirst設計模式》
相關文章
相關標籤/搜索