例項說明
某軟體公司欲開發乙個可應用於多個軟體的檔案加密模組,該模組可以對檔案中的資料進行加密並將加密之後的資料儲存在乙個新檔案中,具體的流程包括三個部分,分別是讀取原始檔、加密、儲存加密之後的檔案,其中,讀取檔案和儲存檔案使用流來實現,加密操作通過求模運算實現。這三個操作相對獨立,為了實現**的獨立重用,讓設計更符合單一職責原則,這三個操作的業務**封裝在三個不同的類中。
現使用外觀模式設計該檔案加密模組。
在圖中,encryptfacade充當外觀類,filereader、ciphermachine和filewriter充當子系統類。
**就暫時不貼出來了,看類圖應該能明白。
外觀模式總結
外觀模式是一種使用頻率非常高的設計模式,它通過引入乙個外觀角色來簡化客戶端與子系統之間的互動,為複雜的子系統呼叫提供乙個統一的入口,使子系統與客戶端的耦合度降
低,且客戶端呼叫非常方便。外觀模式並不給系統增加任何新功能,它僅僅是簡化呼叫介面。在幾乎所有的軟體中都能夠找到外觀模式的應用,如絕大多數b/s系統都有乙個首頁或者導航頁面,大部分c/s系統都提供了選單或者工具欄,在這裡,首頁和導航頁面就是b/s系統的外觀角色,而選單和工具欄就是c/s系統的外觀角色,通過它們使用者可以快速訪問子系統,
降低了系統的複雜程度。所有涉及到與多個業務物件互動的場景都可以考慮使用外觀模式進行重構。
外觀模式的主要優點如下:
(1) 它對客戶端遮蔽了子系統元件,減少了客戶端所需處理的物件數目,並使得子系統使用起來更加容易。通過引入外觀模式,客戶端**將變得很簡單,與之關聯的物件也很少。
(2) 它實現了子系統與客戶端之間的松耦合關係,這使得子系統的變化不會影響到呼叫它的客戶端,只需要調整外觀類即可。
(3) 乙個子系統的修改對其他子系統沒有任何影響,而且子系統內部變化也不會影響到外觀物件。
外觀模式的主要缺點如下:
(1) 不能很好地限制客戶端直接使用子系統類,如果對客戶端訪問子系統類做太多的限制則減少了可變性和靈活
性。(2) 如果設計不當,增加新的子系統可能需要修改外觀類的源**,違背了開閉原則。
在以下情況下可以考慮使用外觀模式:
(1) 當要為訪問一系列複雜的子系統提供乙個簡單入口時可以使用外觀模式。
(2) 客戶端程式與多個子系統之間存在很大的依賴性。引入外觀類可以將子系統與客戶端解耦,從而提高子系統的獨立性和可移植性。
(3) 在層次化結構中,可以使用外觀模式定義系統中每一層的入口,層與層之間不直接產生聯絡,而通過外觀類建立聯絡,降低層之間的耦合度。
結構型模式 外觀模式
外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。外觀模式將客戶端與子系統的內部複雜性進行分隔開,使得客戶端只需要與外觀物件打交道,而不需要與子系統內部的很多物件打交道。外觀模式的目的在於減少系統的複雜程度。在物件導向軟體系...
外觀模式 結構型模式
1 基礎知識 定義 提供了乙個統一的介面,用來訪問子系統中的一群介面。特徵 定義了乙個高層介面讓子系統更容易使用 使用場景 子系統複雜,增加外觀模式提供呼叫介面 當構建多層系統時利用外觀物件作為每層的入口簡化層間呼叫。優點 簡化了呼叫過程,無需深入了解子系統 減少系統依賴 鬆散耦合 符合迪公尺特原則...
外觀模式 結構型模式
1 我們可以把幕布 投影儀 折疊椅,看成乙個小的系統,它裡面又有具體的相關操作。2 我們有乙個客戶端,比如開始的時候。我們就去呼叫幕布的開啟方法,投影儀的開啟方法,折疊椅的開啟方法。3 同理我們的中間 結束也都是呼叫相對應的操作方法。這樣存在乙個問題就是 外觀模式理解起來很簡單,就是我們對其提出乙個...