概述
在軟體開發系統中,客戶程式經常會與複雜系統的內部子系統之間產生耦合,而導致客戶程式隨著子系統的變化而變化。那麼如何簡化客戶程式與子系統之間的互動介面?如何將複雜系統的內部子系統與客戶程式之間的依賴解耦?這就是要說的 façade 模式。
意圖
為子系統中的一組介面提供乙個一致的介面, facade 模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。 [gof 《設計模式》 ]
示意圖
門面模式沒有乙個一般化的類圖描述,下面是乙個示意性的物件圖:
生活中的例子
外觀模式為子系統中的介面定義了乙個統一的更高層次的介面,以便於使用。當消費者按照目錄採購時,則體現了乙個外觀模式。消費者撥打乙個號碼與客服代表聯絡,客服代表則扮演了這個 " 外觀 " ,他包含了與訂貨部、收銀部和送貨部的介面。
acade模式解說
我們平時的開發中其實已經不知不覺的在用 façade 模式,現在來考慮這樣乙個抵押系統,當有乙個客戶來時,有如下幾件事情需要確認:到銀行子系統查詢他是否有足夠多的存款,到信用子系統查詢他是否有良好的信用,到貸款子系統查詢他有無貸款劣跡。只有這三個子系統都通過時才可進行抵押。我們先不考慮 façade 模式,那麼客戶程式就要直接訪問這些子系統,分別進行判斷。類結構圖下:
可以看到,在不用façade 模式的情況下,客戶程式與三個子系統都發生了耦合,這種耦合使得客戶程式依賴於子系統,當子系統變化時,客戶程式也將面臨很多變化的挑戰。乙個合情合理的設計就是為這些子系統建立乙個統一的介面,這個介面簡化了客戶程式的判斷操作。看一下引入 façade 模式後的類結構圖:
外觀模式(Facade)
外觀模式的定義是,為子系統中的一組介面提供乙個一致的inte ce介面介面。外觀模式是個很簡單,但很重要的模式,它主要思想是將表現層和邏輯層隔離,封裝底層的複雜處理,只為使用者提供簡單的介面,這樣的例子隨處可見。外觀模式也叫門面模式,它很多時候更是一種系統架構的設計,在我所做的專案中,就實現了門面模...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade外觀模式,是一種結構型模式,它主要解決...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子 比如,現在有一輛汽車,我們 客戶程式 要啟動它,那我們就要發動引擎 子系統1 使四個車輪 子系統2 ...