設計模式-外觀模式
阿新 • • 發佈:2022-04-22
(1)案例背景:
在計算機主機(Mainframe)中,只需要按下主機的開機按鈕(on()),即可呼叫其他硬體裝置和軟體的啟動方法,如記憶體(Memory)的自檢(check())、CPU的執行(run())、硬碟的(HardDisk)的讀取(read())、作業系統(OS)的載入(load())等,如果某一過程發生錯誤則計算機啟動失敗。使用外觀模式模擬該過程,繪製類圖並程式設計實現。(課本230頁第二題)
(2)實現步驟:
- 根據題意,畫出外觀模式的類圖,使主機類Mainframe充當外觀角色,記憶體類Memory,CPU類CPU,硬碟類HardDisk和作業系統類OS充當子系統角色
- 根據類圖,編寫並實現程式碼
- 編譯並執行程式碼,使程式碼能夠輸出模擬出來的電腦開機過程
(3)案例總結:
在以下情況下可以使用外觀模式:
- 當要為一個複雜子系統提供一個簡單介面的時候可以使用外觀模式,該介面可以滿足大部分使用者需求,使用者也可以越過外觀類直接訪問子系統
- 客戶程式和多個子系統之間存在很大的依賴性。引入外觀類將子系統與客戶以及其他子系統解耦,可以提高子系統的獨立性和可移植性。
- 在層次化結構中,可以使用外觀模式定義系統中每一層的入口,層與層之間不直接產生聯絡,而是通過外觀類建立聯絡,降低層之間的耦合度。
程式碼結構:
詳細程式碼:
Memory.java:
package Mainframe.Function;import Mainframe.Mainframe.Mainframe; public class Memory { public void check(){ System.out.println("記憶體自檢。"); } }
CPU.java:
package Mainframe.Function; public class CPU { public void run(){ System.out.println("CPU執行。"); } }
HardDisk.java:
package Mainframe.Function; public class HardDisk { public void read(){ System.out.println("硬碟讀取。"); } }
OS.java:
package Mainframe.Function; public class OS { public void load(){ System.out.println("作業系統載入。"); } }
Mainframe.java:
package Mainframe.Mainframe; import Mainframe.Function.CPU; import Mainframe.Function.HardDisk; import Mainframe.Function.Memory; import Mainframe.Function.OS; public class Mainframe { public Memory memory = new Memory(); private CPU cpu = new CPU(); private HardDisk hardDisk = new HardDisk(); private OS os = new OS(); public void on(){ memory.check(); cpu.run(); hardDisk.read(); os.load(); } }
Client.java:
package Mainframe; import Mainframe.Mainframe.Mainframe; public class Client { public static void main(String[] args) { System.out.println("詳細設計實驗報告 1904班白旭君 2019005368"); Mainframe mainframe = new Mainframe(); mainframe.on(); } }
實驗結果: