門面模式是對象的結構模式,外部與一個子系統的通訊必須經過一個統一的門面(Facade)對象進行,這就是門面模式。
角色:
1.門面角色:客戶端能夠調用這個角色的方法。此角色知曉相關的一個或多個子系統的功能和責任。在正常狀況下,本角色會將全部從客戶端的請求委派到子系統去
2.子系統角色:能夠同時有一個或多個子系統。每個子系統都不是一個單獨的類,而是一個類的集合。每個子系統均可以被客戶端直接調用,或者被門面角色調用。子系統並不知道門面的存在,對於子系統而言,門面僅僅是另一個客戶端而已。
相似於醫院中設計一個接待員的話(超級無敵全知道)
什麼狀況下使用門面模式?
1.爲一個複雜子系統提供一個簡單接口
子系統每每由於不斷演化而變得愈來愈複雜,使用門面模式 可使得子系統更具可複用性。Facade模式能夠提供一個簡單的默認視圖,對大多數用戶來講,這個視圖已經足夠用了,而那些須要進一步繼承的用戶能夠越過Facade層直接對子系統進行繼承。
2.子系統的獨立性
通常而言,子系統和其餘的子系統之間,客戶端與實現化層之間存在着很大的依賴性。引入Facade模式將一個子系統與它的客戶端以及其餘的子系統分離,能夠提升子系統的獨立性和可移植性。
3.層次化結構
在構建一個層次化的系統時,可使用Facade模式定義系統中每一層的入口。若是層與層之間是相互依賴的,則能夠限定它們僅經過Facade進行通訊,從而簡化了層與層之間的依賴有關係