首頁>技術>

外觀模式(Facade Pattern):

一種透過為多個複雜的子系統提供一個一致的介面,而使這些子系統更加容易被訪問的模式。

外觀模式,對外有一個統一介面,外部應用程式不用關心內部子系統的具體的細節,這樣會大大降低應用程式的複雜度,提高了程式的可維護性;外觀模式是迪米特法則的典型應用;

外觀模式,也稱之為門面模式

外觀模式的角色:

外觀(Facade)、子系統(Sub System)和客戶(Client);

外觀模式的案例:

需求:計算機啟動時一個複雜的過程,主要包含:BlOS檢查、CPU執行、硬碟(HardDrive)讀取、記憶體(Memory)訪問、作業系統(OS)載入啟動等過程,現需要封裝成一個簡單的啟動供客戶端使用;

實現類圖:

實現程式碼:

/** * 子系統角色 */public class BlOS {	public void check() {		System.out.println("BlOS檢查...");	}	}
/** * 子系統角色 */public class CPU {	public void execute() {		System.out.println("CPU執行...");	}	}
/** * 子系統角色 */public class HardDrive {	public void read() {		System.out.println("硬碟讀取...");	}	}
/** * 子系統角色 */public class Memory {		public void access() {		System.out.println("記憶體訪問...");	}}
/** * 子系統角色 */public class OS {	public void load() {		System.out.println("作業系統載入...");	}		public void start() {		System.out.println("作業系統啟動...");	}}
/** * 門面角色 */public class ComputerFacade {		private BlOS bios;	private CPU cpu;	private HardDrive hardDrive;	private Memory memory;	private OS os;		public ComputerFacade(BlOS bios,CPU cpu,HardDrive hardDrive,Memory memory,OS os) {		this.bios = bios;		this.cpu = cpu;		this.hardDrive = hardDrive;		this.memory = memory;		this.os = os;	}		public void start() {		this.bios.check();		this.cpu.execute();		this.hardDrive.read();		this.memory.access();		this.os.load();		this.os.start();	}	}
/** * 客戶端 */public class FacadeClient {	public static void main(String[] args) {		// 子系統		BlOS bios = new BlOS();		CPU cpu = new CPU();		HardDrive hardDrive = new HardDrive();		Memory memory = new Memory();		OS os = new OS();		// 門面		ComputerFacade computerFacade = new ComputerFacade(bios, cpu, hardDrive, memory, os);		computerFacade.start();	}}

4
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 低程式碼實現實時多表判斷