外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。
這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。
其本質就是將系統與客戶端互動的地方封裝起來。
這個模式,總體來說,很簡單,理解起來也不困難。
依然以手機為例,手機開機的時候,我們只需要按一下電源鍵,在電源鍵的觸發事件中,包含了cpu的開啟、系統載入、sim卡資訊載入等。如果把每乙個模組的介面都暴露出來,讓我們乙個個去按,那豈不是太坑爹了。而現在我們只需要乙個開機介面,就可以實現上述所有模組的通電、載入功能,這就是外觀模式的功效。
首先把開機需要用到的模組以及其載入方法定義一下。
cpu:
1package org.scott.facade;
2/**3*
@author
scott
4* @date 2013-12-9
5* @description6*/
7public
class cpu
11 }
sim卡:
1package org.scott.facade;
2/**3*
@author
scott
4* @date 2013-12-9
5* @description6*/
7public
class sim
11 }
系統ui:
1package org.scott.facade;
2/**3*
@author
scott
4* @date 2013-12-9
5* @description6*/
7public
class ui
11 }
所有子系統的操作都封裝到我們的外觀類中,也就是下面的phone:
1package org.scott.facade;
2/**3*
@author
scott
4* @date 2013-12-9
5* @description6*/
7public
class phone
1718
public
void start()
25 }
也就是這麼回事,來個測試類客戶端,開機:
1package org.scott.facade;
2/**3*
@author
scott
4* @date 2013-12-9
5* @description6*/
7public
class facadetest
1314 }
啟動結果:
the phone is starting ...cpu has started ...
sim card has loaded ...
ui has loaded successfully ...
phone has started successfully!
外觀模式適配模式不同,介面卡模式是把當前類或者物件、介面轉變成符合其他條件的東西,而外觀模式是解決類與類之間的依賴關係的,用來提供子系統的乙個簡化介面。
設計模式之外觀模式
外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...
設計模式之外觀模式
外觀模式,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,層與層之間建立外觀facade。在開發階段,子系統往往因不斷的重構演化而變得越來越複雜,增加外觀模式可以提供乙個簡單的...
設計模式之外觀模式
1 為了系統中一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。uml圖如下 2 如何使用外觀模式?這要分三個階段來說,首先,在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,就需要考慮在資料訪問層和業務邏輯層,業務邏輯層和表示層的層與層之...