js中的观察者模式与发布者/订阅者模式的区别?

有没有对这两个理解比较透彻的,帮忙讲讲呗?最好给咱整两个例子看看。
我感觉他俩有点像又感觉不一样,具体说不上来哪不一样?

阅读 1.8k
1 个回答

两种模式整体思想差不多,如果要说区别的话:

观察者模式中 观察者与被观察者之间是直接关联的,相互之间是知道对方的存在;
发布订阅者模式中,发布者与订阅者之间是解耦的,他们之间是通过一个介质(往往是消息队列)进行代理。

观察者模式在应用中往往是同步的,当被观察者一旦有变化,观察者会立即做出响应;
发布订阅者模式由于消息队列代理的存在,往往是异步的;

举个栗子:在 Vue 中,$on$emit 或者 v-on 等事件监听就是发布订阅者模式,而在 ·、data 中通过 getter/setter 让模版能够响应数据变化就是一种观察者模式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题