//保存状态,状态变化,触发所有观察者 发布订阅类 class Subject { constructor() { this.state = { select: '首页' } //状态 this.observer = [] //观察者 } //获取状态 get getState() { return this.state } //设置状态 setState(state) { this.state = state //通知观察者 this.notifyObject() } //通知 notifyObject() { this.observer.forEach((observer) => { observer.update() }) } //添加观察者 attach(observer) { this.observer.push(observer) } } //观察者 class Observer { //name 谁订阅了,subject 发布订阅类 constructor(name, subject) { this.name = name this.subject = subject this.subject.attach(this) //把当前的观察者添加到发布订阅类中 } update() { console.log(`name:${this.name} 状态:${this.subject.getState.select}`) } } //测试 const s = new Subject() const o1 = new Observer('张三', s) s.setState({ select: '新闻' })
正文
js发布订阅与观察者模式
文章版权声明:除非注明,否则均为
譬如朝露_策温技术开发工作室博客原创文章,转载或复制请以超链接形式并注明出处。
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接