Skip to content

行为型模式

行为型设计模式。

观察者模式

定义对象间一对多的依赖关系。

javascript
class Subject {
  constructor() {
    this.observers = []
  }
  
  subscribe(observer) {
    this.observers.push(observer)
  }
  
  notify(data) {
    this.observers.forEach(obs => obs.update(data))
  }
}

策略模式

定义一系列算法,把它们封装起来。

javascript
class Context {
  constructor(strategy) {
    this.strategy = strategy
  }
  
  execute() {
    return this.strategy.do()
  }
}

命令模式

将请求封装为对象,使调用方与接收方解耦,支持撤销/重做。

javascript
class Command { execute() {} }
class LightOn extends Command { execute() { return 'light on' } }

责任链模式

使多个对象都有机会处理请求,请求沿链传递直到被处理。

javascript
class Handler {
  setNext(h) { this.next = h; return h }
  handle(req) { return this.next ? this.next.handle(req) : null }
}