
文章目錄
- 門面模式
門面模式
什么是“門面”?門面就是讓你一看就知道里面可以提供什么東西,但是你又不會知道它是如何提供的,
門面模式是什么?

我知道,這張圖也看不明白在講什么,
門面模式的定義已經呼之欲出了:要求一個子系統的外部與其內部的通信必須通過一個統一的物件進行,門面模式提供一個高層次的介面,使得子系統更易于使用,
優點:高內聚,松耦合,安全,不通過門面上提供的方法,休想訪問模塊內部,
說說我是如何在專案中使用這個模式的吧,
這次帶班的時候做了這么一張圖:

門面上的東西呢,是那些UI界面,而門后面的東西,則是各個演算法類,用戶能接觸到的只有UI,UI類也無法直接接觸到演算法類,只能向任務調度類發出信號,由任務調度類接收信號并作出統籌,這就是我的“門面模式”,
門面模式是個很好的模式,很符合面向介面編程,遵守了依賴倒置原則、迪米特法則等,當然,有些書說違背了開-閉原則,我個人認為,門面模式并不妨礙拓展,只要把基類抽取好,新功能只需要繼承或依賴與基類即可,
以下是一段教科書式的評判:(外觀模式 == 門面模式)
外觀模式的優點非常顯而易見,對客戶屏蔽了內部系統實作,客戶的接入成本大大降低,耦合度也變得簡單,并且,子系統的變更,對客戶的影響也降低,雖然用戶也需要修改代碼,但是大多時候只需要修改外觀即可,同時,外觀模式雖然提供了一個統一的入口,但并不妨礙用戶直接使用子系統,使用更加復雜的功能,當然,凡事有利必有弊,外觀設計模式存在什么問題呢?雖然外觀模式提供了一個入口,但是并不能阻止業務方直接呼叫子系統,可能會給人這樣一種感覺,業務方一定是這么用的,不會產生bug,從而讓人麻痹,所以,使用外觀模式,同時也要對子系統做好保護,其次,外觀模式實際上違背了設計模式中的開閉原則,如果我們要修改業務邏輯,常常業務方也需要進行代碼修改,那么,什么樣的情況下適合使用外觀模式呢?如果我們的呼叫方用到的場景都是一樣的,但我們的子系統又非常地復雜,我們可以考慮封一個外觀,讓業務方更容易接入,
各執一詞,諸位看自己的感覺吧,畢竟書是死的,人是活的,
今天不想上代碼,這個模式,只可意會,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258371.html
標籤:其他
上一篇:[系統安全] 二十一.PE數字簽名之(中)Signcode、PEView、010Editor、Asn1View工具用法
