來個中間類 即 外觀類 來關聯多個業務類,與多個業務互動, 客戶端與外觀類互動, 降低客戶端和這些類的耦合。
如果業務類有變化,外觀類 定義為 抽象類,多個實現。
乙個客戶類需要和多個業務類互動,而這些需要互動的業務類經常會作為乙個整體出現,由於涉及到的模擬較多,導致使用時**較為複雜,此時,特別需要乙個類似服務員一樣的角色,由它來負責和多個業務類進行互動,而客戶類只需與該類互動。引入乙個新的外觀類(facade)來實現該功能,外觀類充當了軟體系統中的「服務員」
外觀模式是一種使用頻率非常高的結構型設計模式,它通過引入乙個外觀角色來簡化客戶端與子系統之間的互動,為複雜的子系統呼叫提供乙個統一的入口,降低子系統與客戶端的耦合度,且客戶端呼叫非常方便。
classsubsystema
} class
subsystemb
} class
subsystemc }
class
facade }
class
program
}
encryptfacade:加密外觀類,充當外觀類。需要增加、刪除或更換與外觀類互動的子系統類,所以可以引入抽象外觀類。namespace
facadesample
//呼叫其他物件的業務方法
public
void fileencrypt(string filenamesrc, string
filenamedes)
} }program:客戶端測試類
class
program
}
引入抽象外觀類之後,客戶端可以針對抽象外觀類進行程式設計,對於新的業務需求,不需要修改原有外觀類,而對應增加乙個新的具體外觀類,由新的具體外觀類來關聯新的子系統物件。
******在以下情況下可以考慮使用外觀模式:
(1) 當要為訪問一系列複雜的子系統提供乙個簡單入口時可以使用外觀模式。
(2) 客戶端程式與多個子系統之間存在很大的依賴性。引入外觀類可以將子系統與客戶端解耦,從而提高子系統的獨立性和可移植性。
(3) 在層次化結構中,可以使用外觀模式定義系統中每一層的入口,層與層之間不直接產生聯絡,而通過外觀類建立聯絡,降低層之間的耦合度。
設計模式(10) 外觀模式
外觀模式 facade pattern 隱藏系統的複雜性,並向客戶端提供了乙個客戶端可以訪問系統的介面。這種型別的設計模式屬於結構型模式,它向現有的系統新增乙個介面,來隱藏系統的複雜性。這種模式涉及到乙個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委託呼叫。用乙個簡單的例子來解釋一下...
設計模式10 外觀模式
外觀模式 facade pattern 外部與乙個子系統的通訊必須通過乙個統一的外觀物件進行,為子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。外觀模式又稱為門面模式,它是一種物件結構型模式。外觀模式包含如下角色 結果 operation a.o...
Java設計模式10 外觀模式
外觀模式 也稱為門面模式 定義了乙個高層介面,為子系統中的一組介面提供了乙個一致的介面,從而使得這一組子系統更加容易使用。這個模式很好的遵循了迪公尺特法則 最少知識法則 即乙個軟體應當盡可能少的與其他實體發生相互作用。醫院例子 現代的軟體系統都是比較複雜的,設計師處理複雜系統的乙個常見方法便是將其 ...