由于整個系統(tǒng)是按照OO概念進行設計的褂微,當需要實現(xiàn)某個需求時,就需要將多個類進行組合使用。
如果不提供示例類的話美侦,客戶可能根本不知道如何對這些類進行組合并正確使用。
如下圖所示:底層類多且關系復雜魂奥,需要了解很多才能正確使用菠剩。
這個時候我們需要將底層的多個類、方法等進行整合耻煤,進而提供一個方便的“門面”給客戶具壮,用以
調(diào)用后臺的功能准颓。當然,這個門面需要設計良好棺妓,可以向底層傳遞關鍵參數(shù)攘已,而更多地注重在隱藏
調(diào)用細節(jié)這一方面。
Java中涧郊,多種Util可以看做是門面模式的一種體現(xiàn)贯被。客戶不需要針對底層API進行學習妆艘,將底層API進
行堆砌而實現(xiàn)功能彤灶,只要直接調(diào)用某一專門的API便可達到效果。
另外在Java Swing中的JOptionPane也可以看做是門面模式的一種體現(xiàn)批旺。底層的界面實現(xiàn)幌陕,選項判斷
等邏輯都被隱藏,用戶只要進行相應的調(diào)用汽煮,傳入?yún)?shù)搏熄,并獲得返回值即可。
值得一提的是暇赤,實現(xiàn)了門面模式心例,雖然能夠?qū)Φ讓舆M行一定程度的抽象,但是也在一定程度上增加了
底層類之間的耦合鞋囊,門面類的邏輯顯得較為固定止后。因此,需要在靈活性和抽象性之間選擇平衡點溜腐。