发布-订阅模式 又叫 观察者模式。 它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
在JavaScript开发中,我们一般用事件模型来替代传统的发布订阅模式。
①发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。比如,我们可以订阅ajax请求的error、succ等事件。
②可以取代对象之间硬编码的通知机制,一个对象不用再显式地调用另外一个对象的某个接口。
买房者收到售楼处发布的房源售卖通知。售楼处就是发布者,买房者就是订阅者,订阅的是售卖房源的信息。买房者有很多人,他们会订阅不同的房源(不同的地理位置,价格、周边等),发布者可以根据不同的订阅者发布不同的信息。
var salesOffices = {}; //发布者售楼处
salesOffices.clientList = {}; // 一个客户列表
salesOffices.listen = function ( key, fn ) { // 一个收集用户订阅信息的方法
if ( ! this.clientList[ key ] ) {
this.clientList[ key ] = [];
}
this.clientList[ key ].push( fn );
};
salesOffices.trigger = function() { // 一个发布订阅消息给用户的方法
var key = Array.prototype.shift.call( arguments );
var fns = this.clientList[ key ];
if ( ! fns || fns.length ==&