- 實驗內容
某系統需要提供一個文件加密模塊,加密流程包括三個操作,分別是讀取源文件、加密、保存加密之後的文件。讀取文件和保存文件使用流來實現,這三個操作相對獨立,其業務代碼封裝在三個不同的類中。現在需要提供一個統一的加密外觀類,用戶可以直接使用該加密外觀完成文件的讀取、加密和保存三個操作,而不需要與每一個類進行交互,使用外觀模式設計該加密模塊。
- 設計類圖
- 具體代碼
- 實現類接口
- 具體實現類(4個分別爲四種文件格式)
- 抽象類
- 擴充抽象類(3個)
擴充抽象類三個分別爲WindowsVersion、LinuxVersion、UnixVersion
- 測試代碼
- 實驗結果
- 分析、總結
- 抽象化角色:抽象化給出定義,包含一個對實現化對象的引用
- 具體抽象化角色:擴展實現抽象化角色
- 實現化角色:這個角色給出實現化角色的接口,但不具體實現。這個 角色與抽象化角色不一定需要相同。相反可以完全不同。相當於抽象 化 角色對應的是一個維度,而實現化角色對應的是第二個維度。
- 具體實現化角色:擴展實現實現化角色
橋接模式。就是將一個類中兩個維度進行分離開來。將抽象接口與實現解耦。然後通過組合橋接關聯在一起。組合使用。其兩個對象都是抽象,然後其子類具體實踐。由抽象接口對實現化角色的對象的引用來關聯。橋接模式適合用於兩個維度常變化的類。把多角度分離出來,然後讓他們獨立變化,減少耦合。
- 具體代碼
- 功能類(3個功能,文件讀取,文件加密,文件保存)
- 外觀類
- 測試類
- 實驗結果
- 讀入的文件
- 寫出的文件
- 分析、總結
根據“單一職責原則”,在軟件中將一個系統劃分爲若干個子系統有利於降低整個系統的複雜性,一個常見的設計目標是使子系統間的通信和相互依賴關係達到最小,而達到該目標的途徑之一就是引入一個外觀對象,它爲子系統的訪問提供了一個簡單而單一的入口。
還降低了原有系統的複雜度,同時降低客戶類與子系統的耦合度
外觀模式適用的場景有:
- 當要爲一個複雜子系統提供一個簡單接口時可以使用外觀模式
- 客戶程序與多個子系統之間存在很大的依賴性
- 在層次化結構中