天天看點

Java設計模式(九)----外觀模式

外觀模式

一、定義

二、結構

三、案例

四、特點

facade(外觀)模式為子系統中的各類(或結構與方法)提供一個簡明一緻的界面,隐藏子系統的複雜性,使子系統更加容易使用。

門面(facade)角色 :用戶端可以調用這個角色的方法。此角色知曉相關的(一個或者多個)子系統的功能和責任。在正常情況下,本角色會将所有從用戶端發來的請求委派到相應的子系統去。

子系統(subsystem)角色

:可以同時有一個或者多個子系統。每個子系統都不是一個單獨的類,而是一個類的集合(如上面的子系統就是由systema、systemb、

systemc三個類組合而成)。每個子系統都可以被用戶端直接調用,或者被門面角色調用。子系統并不知道門面的存在,對于子系統而言,門面僅僅是另外一

個用戶端而已。

源代碼

結果:

客戶1需要的兩個子系統功能

子系統a的功能

子系統b的功能

客戶2需要的三個子系統功能

子系統c的功能

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

2、外觀模式實作了子系統與客戶之間的松耦合關系。

3、外觀模式沒有封裝子系統的類,隻是提供了簡單的接口。 如果應用需要,它并不限制客戶使用子系統類。是以可以再系統易用性與通用性之間選擇。

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

以上内容來自平時所看書籍和網絡資源整理測試所得,如有不完善之處,歡迎指正!