Skip to content

Latest commit

 

History

History
110 lines (93 loc) · 2.19 KB

Facade.md

File metadata and controls

110 lines (93 loc) · 2.19 KB

介绍

  • 属于结构型设计模式
  • 优点:使子系统使用更加容易,实现子系统与用户直接的松耦合
  • 缺点:未限制用户对子系统的使用,违背开闭原则,增加新的子系统需要修改外观类活着客户端的源码
  • 门面模式应用在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