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

Posted 专注前端开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之行为型中介模式相关的知识,希望对你有一定的参考价值。

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

// 中介者对象
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]();
        }
      }
    }
  }
}();

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

以上是关于设计模式之行为型中介模式的主要内容,如果未能解决你的问题,请参考以下文章

行为型模式之中介者模式

20行为型模式之中介者模式

行为型模式之中介者模式

9 行为型模式之 - 中介者模式

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

Python 设计模式 — 行为型模式 — 中介者模式