文章出處
文章列表
使用頻率:★★★★★
一、什么是外觀模式
在子系統中的接口之上定義一個更高層次的接口,方便使用子系統中的接口;
二、補充說明
缺點:不符合開閉原則,修改子系統的代碼會影響高層接口代碼;
優點:引入外觀類可以降低系統的復雜度,提高了客戶端使用的便捷性;
優點:客戶類與子系統解耦;
三、角色
子系統角色
外觀角色
客戶端角色
四、例子,JAVA實現
模擬電腦開機情景,有三個子系統:BIOS系統,硬盤系統,操作系統;啟動過程是先啟動BIOS, 然后加載硬盤,然后啟動操作系統;
子系統角色,BIOS系統
package com.pichen.dp.structuralpattern.facade; public class BIOS { public void start(){ System.out.println("BIOS start."); } }
子系統角色,硬盤系統
package com.pichen.dp.structuralpattern.facade; public class Disk { public void load(){ System.out.println("Disk load."); } }
子系統角色,操作系統
package com.pichen.dp.structuralpattern.facade; public class OS { /** * 假設啟動OS子系統需要用到Disk子系統作為入參 * start * TODO * @Title: start * @Description: TODO * @param @param disk * @return void * @throws */ public void start(Disk disk){ System.out.println("OS start."); } }
外觀角色,在子系統之上定義了一個更高層次接口,方便啟動PC
package com.pichen.dp.structuralpattern.facade; public class ComputerFacade { private BIOS bios; private Disk disk; private OS os; public ComputerFacade() { bios = new BIOS(); disk = new Disk(); os = new OS(); } public void start(){ bios.start(); disk.load(); os.start(disk); } }
客戶端角色,啟動PC, 如果不使用外觀模式,啟動PC較復雜,使用外觀模式,簡化了客戶端操作
package com.pichen.dp.structuralpattern.facade; public class Main { public static void main(String[] args) { ComputerFacade pc = new ComputerFacade(); pc.start(); //不使用外觀模式情況 // BIOS bios = new BIOS(); // Disk disk = new Disk(); // OS os = new OS(); // bios.start(); // disk.load(); // os.start(disk); } }
結果打印
BIOS start.
Disk load.
OS start.
文章列表
全站熱搜