java设计模式-外观模式

前言

外观模式(Facade),又叫门面模式,是为了解决类与类之家的依赖关系的,给客户端提供一个统一入口,并对外屏蔽内部子系统的调用细节。像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度

很多Web程序,内部有多个子系统提供服务,经常使用一个统一的Facade入口,例如一个RestApiController,使得外部用户调用的时候,只关心Facade提供的接口,不用管内部到底是哪个子系统处理的。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class CPU {

public void work(){
System.out.println("cpu start work!");
}

}

public class Disk {

public void load(){
System.out.println("disk start load!");
}

}

public class Memory {

public void connect(){
System.out.println("memory start connect!");
}

}


public class Computer {

private CPU cpu;
private Disk disk;
private Memory memory;

public Computer() {
cpu = new CPU();
disk = new Disk();
memory = new Memory();
}

public void startup(){
System.out.println("start the computer!");
cpu.work();
memory.connect();
disk.load();
}
}

public class FacadeTest {

public static void main(String[] args) {
Computer computer = new Computer();
computer.startup();
}

}

计算机内部零部件特别多,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,而用户使用计算机就只要和计算机这个类打交道,这就是外观模式的特点

SLF4J使用的就是外观模式(门面)