门面模式

类图

代码

SubSystem

1
2
3
4
5
6
7
8
9
10
11
class Cpu{
void start(){
System.out.println("CPU启动");
}
}

class Memory{
void start(){
System.out.println("内存启动");
}
}

System

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
class Computer{
private Cpu cpu;

private Memory memory;

public Cpu getCpu() {
return cpu;
}

public void setCpu(Cpu cpu) {
this.cpu = cpu;
}

public Memory getMemory() {
return memory;
}

public void setMemory(Memory memory) {
this.memory = memory;
}

public void start(){
cpu.start();
memory.start();
}
}

测试类

1
2
3
4
5
6
7
8
9
10
public class Main {
public static void main(String args[]){
Cpu cpu = new Cpu();
Memory memory = new Memory();
Computer computer = new Computer();
computer.setCpu(cpu);
computer.setMemory(memory);
computer.start();
}
}

总结

优点

  1. 实现子系统与客户之间的解耦
  2. 提供统一入口简化客户端调用

缺点

如果子类变更过多,会导致入口处也会有变化,违反了开闭原则