- 属于结构型设计模式
- 优点:使子系统使用更加容易,实现子系统与用户直接的松耦合
- 缺点:未限制用户对子系统的使用,违背开闭原则,增加新的子系统需要修改外观类活着客户端的源码
- 门面模式应用在Tomcat的Request中
今天通过门面模式来描述一台电脑的启动和关闭
public class CPU {
public void start() {
System.out.println("CPU start");
}
public void close() {
System.out.println("CPU close");
}
}
public class Disk {
public void start() {
System.out.println("Disk start");
}
public void close() {
System.out.println("Disk close");
}
}
public class Screen {
public void start() {
System.out.println("Screen start");
}
public void close() {
System.out.println("Screen close");
}
}
public class Computer {
private CPU cpu;
private Disk disk;
private Screen screen;
public Computer() {
this.cpu = new CPU();
this.disk = new Disk();
this.screen = new Screen();
}
public void start() {
System.out.println("Computer start begin");
cpu.start();
disk.start();
screen.start();
System.out.println("Computer start finish");
}
public void close() {
System.out.println("Computer close begin");
cpu.close();
disk.close();
screen.close();
System.out.println("Computer close finish");
}
}
public class Main {
public static void main(String[] args) {
Computer computer = new Computer();
computer.start();
System.out.println("use computer doing something...");
computer.close();
}
}
// 结果
Computer start begin
CPU start
Disk start
Screen start
Computer start finish
use computer doing something...
Computer close begin
CPU close
Disk close
Screen close
Computer close finish