使用的動機:一、在我們編寫代碼的時候,大部分都會將不同的層次細分,那麼增加一箇中間者Facade,可以減少各層次之間的耦合,方便調用。
二、在系統的開發中,代碼量增加,各個類間的耦合,可以在其中增加一個外觀Facade,減少各自的依賴。
三、在重構粗糙高度複雜的遺留代碼時,在不瞭解次模塊下的各自細節,直接進行擴展或者修改會比較困難,使用外觀Facade作爲遺留代碼的交互,新的功能在外觀基礎上進行開發會相對簡單一些。
總而言之,外觀Facade是通過一個間接的形式,讓複雜的代碼之間可以減少耦合和依賴,方便後續的開發和維護。而通常我們對於經驗不足的開發者來說,經常會直接讓多個不同層次(這裏是層次,並不代表每個類直接都要有一個Facade)直接進行耦合或相互依賴,在後期改動代碼時,沒有一個間接的類來幫助可能會讓成本提高。
通過這個圖,使用外觀Facade可以比較清晰的處理新功能與遺留代碼直接的關係。
總結自:《大話設計模式》外觀模式