JavaScript设计模式之观察者模式(发布与订阅)

  • A+
所属分类:彩天堂怎么样?

发布---订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知.。发布者和订阅者是完全解耦的,彼此不知道对方的存在,两者仅仅共享一个自定义事件的名称。

JS传统事件就是一个观察者模式,之所以要有观察者模式,是因为有时候和传统事件无关的事件,比如Vue.js中父组件获取子组件中的信息,就会用到单一事件管理,也就是消息的发布与订阅。参考文章:《Vue通过设置单一事件管理组件通信的方法》。

另外,在Node.js中也实现了事件的发布与订阅,如下代码:

上面Node.js的 emitter对象中的 emitter.on是指发布事件”someEvent”,而emitter.emit是指触发事件,事件名称为”someEvent”.从而执行回调函数。在Node.js中我们可以发布很多事件,事件名称为someEvent,这样每一个回调就实现了一个业务逻辑,这样代码耦合性降低了。

我们也可以自己实现一个事件的发布订阅类:

当我们在浏览器端使用JS的时候,可能传统的DOM对象拥有的事件就足够使用了,但是在非浏览器端或者是一些特殊的浏览器环境下,通过自定义事件,也就是事件的订阅与发布,可以帮我们解决很多问题。

彩天堂