設計模式10 外觀模式

2022-03-12 15:40:56 字數 1443 閱讀 8894

外觀模式(facade pattern):外部與乙個子系統的通訊必須通過乙個統一的外觀物件進行,為子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。外觀模式又稱為門面模式,它是一種物件結構型模式。

外觀模式包含如下角色:

結果

operation a...

operation b...

operation c...

根據「單一職責原則」,在軟體中將乙個系統劃分為若干個子系統有利於降低整個系統的複雜性,乙個常見的設計目標是使子系統間的通訊和相互依賴關係達到最小,而達到該目標的途徑之一就是引入乙個外觀物件,它為子系統的訪問提供了乙個簡單而單一的入口。

外觀模式的優點

外觀模式的缺點

在以下情況下可以使用外觀模式:

在外觀模式中,通常只需要乙個外觀類,並且此外觀類只有乙個例項,換言之它是乙個單例類。在很多情況下為了節約系統資源,一般將外觀類設計為單例類。當然這並不意味著在整個系統裡只能有乙個外觀類,在乙個系統中可以設計多個外觀類,每個外觀類都負責和一些特定的子系統互動,向使用者提供相應的業務功能。

不要通過繼承乙個外觀類在子系統中加入新的行為,這種做法是錯誤的。外觀模式的用意是為子系統提供乙個集中化和簡化的溝通渠道,而不是向子系統加入新的行為,新的行為的增加應該通過修改原有子系統類或增加新的子系統類來實現,不能通過外觀類來實現。

外觀模式創造出乙個外觀物件,將客戶端所涉及的屬於乙個子系統的協作夥伴的數量減到最少,使得客戶端與子系統內部的物件的相互作用被外觀物件所取代。外觀類充當了客戶類與子系統類之間的「第三者」,降低了客戶類與子系統類之間的耦合度,外觀模式就是實現**重構以便達到「迪公尺特法則」要求的乙個強有力的**。

外觀模式最大的缺點在於違背了「開閉原則」,當增加新的子系統或者移除子系統時需要修改外觀類,可以通過引入抽象外觀類在一定程度上解決該問題,客戶端針對抽象外觀類進行程式設計。對於新的業務需求,不修改原有外觀類,而對應增加乙個新的具體外觀類,由新的具體外觀類來關聯新的子系統物件,同時通過修改配置檔案來達到不修改源**並更換外觀類的目的。

設計模式(10) 外觀模式

外觀模式 facade pattern 隱藏系統的複雜性,並向客戶端提供了乙個客戶端可以訪問系統的介面。這種型別的設計模式屬於結構型模式,它向現有的系統新增乙個介面,來隱藏系統的複雜性。這種模式涉及到乙個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委託呼叫。用乙個簡單的例子來解釋一下...

Java設計模式10 外觀模式

外觀模式 也稱為門面模式 定義了乙個高層介面,為子系統中的一組介面提供了乙個一致的介面,從而使得這一組子系統更加容易使用。這個模式很好的遵循了迪公尺特法則 最少知識法則 即乙個軟體應當盡可能少的與其他實體發生相互作用。醫院例子 現代的軟體系統都是比較複雜的,設計師處理複雜系統的乙個常見方法便是將其 ...

設計模式完結 10 外觀模式

來個中間類 即 外觀類 來關聯多個業務類,與多個業務互動,客戶端與外觀類互動,降低客戶端和這些類的耦合。如果業務類有變化,外觀類 定義為 抽象類,多個實現。乙個客戶類需要和多個業務類互動,而這些需要互動的業務類經常會作為乙個整體出現,由於涉及到的模擬較多,導致使用時 較為複雜,此時,特別需要乙個類似...