zhangdizhangdi

外观模式 📖

定义

外观模式(Facade Pattern),为复杂子系统提供一个统一的简单接口,把一堆复杂操作“包起来”,对外只暴露一个简单入口。

洗衣机的一链洗衣按钮,包含浸泡、洗衣、漂洗、脱水,就是一个外观。

符合的设计原则:

  1. 迪米特法则(最少知道原则):用户不需要知道内部细节

实现

js
class Light {
  turnOn() {
    console.log('Light turn on')
  }
  turnOff() {
    console.log('Light turn off')
  }
}
class TV {
  turnOn() {
    console.log('TV turn on')
  }
  turnOff() {
    console.log('TV turn off')
  }
}
class Computer {
  turnOn() {
    console.log('Computer turn on')
  }
  turnOff() {
    console.log('Computer turn off')
  }
}

class Facade {
  constructor() {
    this.light = new Light()
    this.tv = new TV()
    this.computer = new Computer()
  }

  turnOn() {
    this.light.turnOn()
    this.tv.turnOn()
    this.computer.turnOn()
  }
  turnOff() {
    this.light.turnOff()
    this.tv.turnOff()
    this.computer.turnOff()
  }
}

const facade = new Facade()
facade.turnOn()
facade.turnOff()
执行结果
Light turn on
TV turn on
Computer turn on
Light turn off
TV turn off
Computer turn off

前端应用