分類
結構型模式。
這個模式在解決什麼
外觀模式要解決的是「底層系統太複雜,客戶端不該知道那麼多細節」的問題。當一個操作需要調用很多類、很多接口,而且這套流程還會被反覆使用時,就適合用一個對外的簡化入口把它包起來。
核心做法
建立一個外觀類,對外提供少量高層接口。客戶端只需要調用這些高層接口,而外觀類內部再去協調多個子系統完成整套工作。
換句話說,外觀模式不是消滅底層複雜度,而是把複雜度收在一個地方。
什麼時候適合用
下面這些情況很典型:
- 同一套複雜操作會被很多地方重複使用
- 客戶端不應直接依賴過多子系統
- 想提供一個更高層、更穩定的調用入口
例子
假設系統中有一個「啟動」流程,它其實依賴了 N 個類中的 M 個接口。若沒有外觀模式,每個需要啟動功能的調用者都得自己知道這整套細節。
而有了外觀類之後,客戶端只要調用像 StartUp() 這樣的一個方法即可,真正的細節組裝都留在外觀類內部。
類圖

這一篇先記住的重點
- 外觀模式的價值在於簡化入口,而不是重做底層系統
- 它適合拿來封裝重複使用的複雜流程
- 客戶端因此可以減少對多個子系統的直接依賴
參考書目
《Head First Design Patterns》Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates