外觀模式是為了解決類與類之家的依賴關(guān)系的,像spring一樣拔鹰,可以將類和類之間的關(guān)系配置到配置文件中占卧,而外觀模式就是將他們的關(guān)系放在一個(gè)Facade類中,降低了類類之間的耦合度尝蠕,該模式中沒(méi)有涉及到接口烘豌,看下類圖:(我們以一個(gè)計(jì)算機(jī)的啟動(dòng)過(guò)程為例)
外觀模式
我們先看下實(shí)現(xiàn)類:
public class CPU {
public void startup(){
System.out.println("cpu startup!");
}
public void shutdown(){
System.out.println("cpu shutdown!");
}
}
public class Memory {
public void startup(){
System.out.println("memory startup!");
}
public void shutdown(){
System.out.println("memory shutdown!");
}
}
public class Disk {
public void startup(){
System.out.println("disk startup!");
}
public void shutdown(){
System.out.println("disk shutdown!");
}
}
public class Computer {
private CPU cpu;
private Memory memory;
private Disk disk;
public Computer(){
cpu = new CPU();
memory = new Memory();
disk = new Disk();
}
public void startup(){
System.out.println("start the computer!");
cpu.startup();
memory.startup();
disk.startup();
System.out.println("start computer finished!");
}
public void shutdown(){
System.out.println("begin to close the computer!");
cpu.shutdown();
memory.shutdown();
disk.shutdown();
System.out.println("computer closed!");
}
}
User類如下:
public class User {
public static void main(String[] args) {
Computer computer = new Computer();
computer.startup();
computer.shutdown();
}
}
輸出:
start the computer!
cpu startup!
memory startup!
disk startup!
start computer finished!
begin to close the computer!
cpu shutdown!
memory shutdown!
disk shutdown!
computer closed!
如果我們沒(méi)有Computer類,那么看彼,CPU廊佩、Memory、Disk他們之間將會(huì)相互持有實(shí)例靖榕,產(chǎn)生關(guān)系标锄,這樣會(huì)造成嚴(yán)重的依賴,修改一個(gè)類茁计,可能會(huì)帶來(lái)其他類的修改料皇,這不是我們想要看到的,有了Computer類簸淀,他們之間的關(guān)系被放在了Computer類里瓶蝴,這樣就起到了解耦的作用,這就是外觀模式租幕!