外觀模式(門面模式),是一種相對簡單而又無所不在的模式。外觀模式提供一個高層接口,這個接口使得客戶端或子系統更方便呼叫。
用一段再簡單不過的程式碼來表示:
如果你需要分別呼叫getName和getSex函數. 那可以用一個更高層的介面getUserInfo來呼叫.
答案是顯而易見的,飯堂的炒菜師傅不會因為你預定了一份燒鴨和一份白菜就把這兩樣菜炒在一個鍋裡。他更願意提供你一個燒鴨飯套餐。同樣在程式設計中,我們需要保證函數或物件盡可能的處在一個合理粒度,畢竟不是每個人喜歡吃燒鴨的同時又剛好喜歡吃白菜。
外觀模式還有一個好處是可以對使用者隱藏真正的實作細節,使用者只關心最高層的介面。例如在燒鴨飯套餐的故事中,你並不關心師傅是先做燒鴨還是先炒高麗菜,你也不關心那隻鴨子是在哪裡成長的。
最後寫一個我們都用過的外觀模式範例: