观察者模式:又被称作发布-订阅者模式或消息几支,定义了一种依赖关系,解决了主体对象与观察者之间功能的耦合。
观察者模式有3个接口,注册信息接口,发布信息接口,移除信息接口
注册信息接口:判断消息是否存在于消息容器_messages中,如果不存在,那么将该消息类型推入到消息容器_messages中,注意这里推入的是数组形式的消息,所以_massages[type]=[fn]。如果该消息已存在于消息容器中,将新的动作追加到对应的消息类型中。
发布消息接口(执行对应类型的消息):如果消息没有注册,则返回,如果存在,将消息类型于传过来的参数封装成events对象,然后遍历对应消息类型的动作队列。
消息注销接口:检验消息类型是否存在,遍历消息动作队列,逐个移除。
//以前写的代码
var Observer = (function(){//防止消息队列暴露而被篡改故将消息容器作为静态私有变量保存var _messages = {}return {//注册消息接口regist:function(type,fn){//如果此消息不存在则应该创建一个该消息类型if(typeof _messages[type] === 'undefined'){//将动作推入到该消息对应的动作执行队列中_messages[type] = [fn];}//如果消息存在else{//将动作推入到该消息_messages[type].push(fn)}},fire:function(type,args){//如果消息没有注册,则