标签:new 发布-订阅 set 需要 创建 响应 date 发布订阅 添加
还有一些好的列子应用可以看看 javascript设计模式与开发实践 这本书!!!!!
发布订阅者模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象豆浆得到通知,在js开发中我们一般用事件模型来替代传统的发布-订阅模式
// 主题,接收状态变化,触发每个观察者
class Subject {
constructor() {
// 被观察的数据
this.state = 0
// 观察者们
this.observers = []
}
getState() {
return this.state
}
// 修改状态,即被关注的状态
setState(state) {
this.state = state
this.notifyAllObservers()
}
// 添加订阅者
attach(observer) {
this.observers.push(observer)
}
// 通知订阅者
notifyAllObservers() {
this.observers.forEach(observer => {
observer.update()
})
}
}
// 观察者,等待被触发
class Observer {
constructor(name, subject) {
this.name = name
this.subject = subject
this.subject.attach(this)
}
update() {
console.log(`${this.name} update, state: ${this.subject.getState()}`)
}
}
// 测试代码
let s = new Subject()
let o1 = new Observer(‘o1‘, s)
let o2 = new Observer(‘o2‘, s)
let o3 = new Observer(‘o3‘, s)
// 每次对s中state的状态修改,上面的o1、o2等观察者都会执行update更新状态
s.setState(1)
s.setState(2)
s.setState(3)
观察者模式实在是太火了,应用到的地方太多了!!!!在MVC和MVVM框架中广泛应用!!!
网页事件绑定
promise
jQuery callbacks
jquery写的少不了解就不举例了
node.js自定义事件
vue响应式原理,vue中$emit和$on,vue中的watch....
多进程通讯
标签:new 发布-订阅 set 需要 创建 响应 date 发布订阅 添加
原文地址:https://www.cnblogs.com/fcblog2022/p/13277344.html