200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 观察者模式(发布订阅者模式)javascript方式

观察者模式(发布订阅者模式)javascript方式

时间:2019-10-03 04:31:30

相关推荐

观察者模式(发布订阅者模式)javascript方式

// 主题,接收状态变化,触发每个观察者,这里你把它想象成微博这个系统的一部分class Subject {constructor(name) {this.name=namethis.state ="" //相当于发表的内容this.observers = [] //想当于关注他的人}getState() {return this.state}setState(state) {//这个方法你把它当作发布文章this.state = stateconsole.log(this.name+'发布了'+this.state)this.notifyAllObservers()}attach(observer) {//这个方法是添加关注this.observers.push(observer)}notifyAllObservers() {//这个方法相当与提醒你人家发布动态了this.observers.forEach(observer => {observer.update(this.name)})}}// 观察者,等待被触发,相当与你本人class Observer {constructor(name, subject) {this.name = namethis.subject = subject //这个是你关注的文章this.subject.attach(this)}update(name) {//这个方法等同于你看了文章console.log(`${this.name}看了${name}的文章: ${this.subject.getState()}`)}}// 测试代码let s = new Subject("某某大V" )//o1,o2相当与邹××和邹邹邹关注了let o1 = new Observer('邹××', s)let o2 = new Observer('邹邹邹', s)s.setState("我要学习")

解释一下,2个类,1个为订阅者,一个为发布者,发布者发布的同时订阅者会运行方法,你可以把他想象成一个知识网站的订阅功能

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。