javascript设计模式——中介者模式

中介者模式:通过中介者对象封装一些列对象之间的交互,使对象之间不再相互引用,降低他们之间的耦合。

中介者和观察者对比:同观察者模式一样,中介者模式的主要业务也是通过模块间或者对象见的复杂通信,来解决模块间或对象间的耦合。对于中介者对象的本质是封装多个对象的急哦阿虎,并且这些对象的交互一般都是在中介者内部实现的。虽然两种模式都是通过消息传递实现对象间或者模块间的解耦。观察者模式中的订阅者是双向的,既可以是消息的发布者,也可以是消息的订阅者。而中介者模式中,订阅者是单向的,只能是消息的订阅者。而消息统一由中介者对象发布,所有的订阅者对象间接地被中介者管理。

  // 创建中介者
  var Mediator = function() {
    var _msg = {}
    return {
      register: function(type, action) {
        if (!_msg[type]) _msg[type] = []
        _msg[type].push(action)
      },
      send: function(type) {
        if(_msg[type]) {
          for (var i = 0; i < _msg[type].length; i++) {
            _msg[type][i] && _msg[type][i]()
          }
        }
      }
    }
  }()

  Mediator.register('demo', function () {
    console.log('first')
  })
  Mediator.register('demo', function () {
    console.log('second')
  })
  Mediator.send('demo')

你可能感兴趣的:(javascript设计模式——中介者模式)