外观模式 📖
定义
外观模式(Facade Pattern),为复杂子系统提供一个统一的简单接口,把一堆复杂操作“包起来”,对外只暴露一个简单入口。
洗衣机的一链洗衣按钮,包含浸泡、洗衣、漂洗、脱水,就是一个外观。
符合的设计原则:
- 迪米特法则(最少知道原则):用户不需要知道内部细节
实现
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