外觀模式:
為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。
有乙個面向客戶**的外觀類facade,該外觀類向客戶**提供了一組介面,每一介面可能封裝了子系統的一系列操作,但是一系列的操作對客戶**是隱藏的,而對於外觀類則是開放的。
通俗的說:假設客戶**為了實現某個功能,需要從多個子系統中呼叫多個方法。如果直接呼叫,那麼將極大增強了**間的耦合性,同時也為**的後期維護埋下了很大的隱患,加大了後期維護的成本。這個時候,使用外觀類,該外觀類儲存了需要使用到的所有子系統的引用,並根據客戶**的不同需求,將一組子類的某些操作封裝成乙個簡單的介面提供給客戶**使用。
現在用實際例子來描述外觀模式的用處:
假設公司附近一家餐廳裡有三位廚師,分別專攻肉類,蔬菜類,湯類。該餐廳根據多數人的用餐需求,將食物歸類成**的形式**給上班族。
上班族只需要告訴waiter 自己需要哪個**就能在一次點餐過程中完成對肉類蔬菜類和湯類食物的訂製。
在這裡,我們可以將三位廚師看成是三個不同的子系統,waiter 是facade 外觀,waiter 從廚師那裡獲得不同的食物並組合成相應的**來**為顧客,相當於將三分食物包含在乙個介面裡,並提供為顧客
1. 定義乙個meatcook 廚師類,該廚師主要負責烹飪肉類食物
2.再分別建立 vegetablecook 和 soupcook 類,這兩個廚師分別負責 蔬菜和湯的烹飪
3.建立 外觀類waiter 。 waiter 類儲存了 三個子系統(cook) 的引用,並為客戶**提供兩個介面。
4. 編寫測試**來驗證**的正確性:
測試**要求waiter 分別提供 **a 和 **b『
結果輸出:
beef
eggsoup
cabbage
pork
eggsoup
potato
通過實驗結果我們可以看到,外觀 的作用就是將其他多個類得多個操作封裝成乙個簡單的介面提供給客戶**。
學習筆記 Java設計模式 命令模式
最近做開發發現自己 邏輯混亂,覺得有必要重溫下設計模式。於是就翻到了終點大神的部落格在這裡記錄下自己的學習後的理解。命令模式 命令模式的主要目的,用官話來說,是將呼叫者與執行者解耦。將 結構劃分為呼叫者 命令 執行者三個部分。其中,執行者作為命令的屬性被設定,因此,也可以理解為呼叫者 命令 執行者 ...
Java設計模式10 外觀模式
外觀模式 也稱為門面模式 定義了乙個高層介面,為子系統中的一組介面提供了乙個一致的介面,從而使得這一組子系統更加容易使用。這個模式很好的遵循了迪公尺特法則 最少知識法則 即乙個軟體應當盡可能少的與其他實體發生相互作用。醫院例子 現代的軟體系統都是比較複雜的,設計師處理複雜系統的乙個常見方法便是將其 ...
Java設計模式學習筆記1
用最簡單加減法來舉例 calculate 計算方法介面 public inte ce calculate分別建立add以及sub子類並實現其邏輯 public class addimplements calculate public class subimplements calculate 建立c...