观察者模式(Observer)
定义:属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变动时,会告诉所有的观察者对象,使他们可能自动更新本人。
实现
<span id="num">1</span> <button onclick="numAdd()">+</button>
var num = document.getElementById('num') function numAdd() { notice.setState(Math.floor(Math.random() * 10)) num.innerText = notice.state + Math.floor(Math.random() * 10) } function Theme() { this.observers = [] this.state = 0 this.setState = function (newVal) { this.state = newVal this.notifyAllObservers() } this.attach = function (observer) { this.observers.push(observer) } this.notifyAllObservers = function () { this.observers.forEach((item) => item.updated(this.state)) } } function Observer(name) { this.name = name this.updated = function (e) { console.log(`${this.name}接管到了新音讯`, e) } } var notice = new Theme() var observer1 = new Observer('观察者1') var observer2 = new Observer('观察者2') notice.attach(observer1) notice.attach(observer2)