码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之行为型中介模式

时间:2017-09-01 12:45:33      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:push   有一个   设计   活跃   ++   iat   length   之间   col   

通过中介者对象封装一系列对象之间的交互,使对象之间不再相互引用,降低他们之间的耦合,有时中介者对象也可以改变对象之间的交互。
观察者模式和中介者模式都是通过消息收发机制实现,不过在观察者模式中,一个对象既可以是消息的发送者也可以是消息的接收者,而中介者模式中消息的发送方只有一个就是中介者对象,而且中介者对象不能订阅消息,只有那些活跃对象(订阅者)才能订阅中介者消息。

// 中介者对象
var Mediator = function() {
  // 消息对象
  var _msg = {};
  return {
    // 订阅消息方法,type:消息名称 action:消息回调函数
    register: function(type, action) {
      // 如果消息存在
      if(_msg[type])
        // 存入回调函数
        _msg[type].push(action);
      else {
        // 不存在则建立消息容器
        _msg[type] = [];
        _msg[type].push(action);
      }
    },
    // 发布消息方法
    send: function(type) {
      // 如果该消息已经被订阅
      if(_msg[type]) {
        // 遍历已存储的消息回调函数
        for(var i = 0, len = _msg[type].length; i < len; i++) {
          // 执行回调函数
          _msg[type][i] && _msg[type][i]();
        }
      }
    }
  }
}();

在中介者模式中,订阅者是单向的,只能是订阅者而不能是发布者。而消息统一由中介者对象发布。

设计模式之行为型中介模式

标签:push   有一个   设计   活跃   ++   iat   length   之间   col   

原文地址:http://www.cnblogs.com/camille666/p/design_pattern_behavior_mediator.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!