什么是观察者模式?
这是一种创建松散耦合代码的技术。它定义对象间 一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体。主体并不知道观察者的任何事情,观察者知道主体并能注册事件的回调函数。
观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。
以node.js举个例子
如下,利用on方法为同一事件someEvent注册了两个观察者。(或者叫监听者)
之后emit发射事件,也就是someEvent发生变化时,这个变化会被上述两个观察者捕捉到,使得观察者可以更新自己。
var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('someEvent', function(arg1, arg2) {
console.log('listener1', arg1, arg2); //listener1 arg1 参数 arg2 参数
});
emitter.on('someEvent', function(arg1, arg2) {
console.log('listener2', arg1, arg2); //listener2 arg1 参数 arg2 参数
});
emitter.emit('someEvent', 'arg1 参数', 'arg2 参数');
在这里on绑定事件,是观察者,emit是发布者。(不严谨的说法,我也不知道怎么说)。
总结
有点绕但大致都明白了