什麼是「門面」?門面就是讓你一看就知道裡面可以提供什麼東西,但是你又不會知道它是如何提供的。
門面模式是什麼?
我知道,這張圖也看不明白在講什麼。
門面模式的定義已經呼之欲出了:要求乙個子系統的外部與其內部的通訊必須通過乙個統一的物件進行。門面模式提供乙個高層次的介面,使得子系統更易於使用。
優點:高內聚,松耦合。安全,不通過門面上提供的方法,休想訪問模組內部。
說說我是如何在專案中使用這個模式的吧。
這次帶班的時候做了這麼一張圖:
門面上的東西呢,是那些ui介面,而門後面的東西,則是各個演算法類,使用者能接觸到的只有ui,ui類也無法直接接觸到演算法類,只能向任務排程類發出訊號,由任務排程類接收訊號並作出統籌,這就是我的「門面模式」。
門面模式是個很好的模式,很符合面向介面程式設計,遵守了依賴倒置原則、迪公尺特法則等,當然,有些書說違背了開-閉原則,我個人認為,門面模式並不妨礙拓展,只要把基類抽取好,新功能只需要繼承或依賴與基類即可。
以下是一段教科書式的評判:(外觀模式 == 門面模式)
外觀模式的優點非常顯而易見,對客戶遮蔽了內部系統實現,客戶的接入成本大大降低,耦合度也變得簡單。並且,子系統的變更,對客戶的影響也降低,雖然使用者也需要修改**,但是大多時候只需要修改外觀即可。同時,外觀模式雖然提供了乙個統一的入口,但並不妨礙使用者直接使用子系統,使用更加複雜的功能。當然,凡事有利必有弊,外觀設計模式存在什麼問題呢?雖然外觀模式提供了乙個入口,但是並不能阻止業務方直接呼叫子系統,可能會給人這樣一種感覺,業務方一定是這麼用的,不會產生bug,從而讓人麻痺,所以,使用外觀模式,同時也要對子系統做好保護。其次,外觀模式實際上違背了設計模式中的開閉原則,如果我們要修改業務邏輯,常常業務方也需要進行**修改。那麼,什麼樣的情況下適合使用外觀模式呢?如果我們的呼叫方用到的場景都是一樣的,但我們的子系統又非常地複雜,我們可以考慮封乙個外觀,讓業務方更容易接入。
各執一詞,諸位看自己的感覺吧,畢竟書是死的,人是活的。
今天不想上**,這個模式,只可意會。
設計模式 05 門面模式
目錄 什麼是門面模式 為什麼要用門面模式 門面模式組成 需要注意的幾點 門面模式如其名稱所述,是內部功能對外的使用者介面。就如同門面一樣,將自身內在的複雜功能實現隱藏,而對外暴露簡單的使用者介面。在專案裡當乙個系統要去完成乙個功能時,很多情況下都需要其多個子系統服務聯合才能完成。而對應外界的呼叫方來...
設計模式六(門面模式)
門面模式 門面模式 facade pattern 又叫外觀模式,提供了乙個統一介面,用來訪問子系統中的一群介面。其主要特徵是定義了乙個高層介面,讓子系統更容易使用,屬於結構型模式。其實,在我們日常的編碼工作中,我們都在有意無意的大量使用門面模式,但凡只要高層模組需要排程多個子系統 2 個以上類物件 ...
設計模式筆記14 門面模式
在主件構建過程中,某些介面之間的依賴常常會帶來很多問題 甚至根本無法實現。採用新增一層間接 穩定 介面,來隔離本來互相緊密關聯的介面是一種常見的解決方案。典型模式 為子系統中的一組介面提供乙個一致 穩定 的介面,fa ade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用 復用 設計模式 ...