# 设计模式:中介者模式

# 什么是中介者模式

用一个中间对象来封装一系列对象的交互,对象间不需要互相引用。从而实现松耦合,而且还可以独立的改变他们之间的交互

案例:

机场塔台用来调度飞机的起飞和降落,塔台就是中介者。如果没有塔台各个机长之间相互协调将是一个非常繁杂的工作,每一个飞机的起飞和降落都要通知其他的飞机这是非常繁琐的。

# Coding

// 中介者
let controlTower = {
  all: {},
  register: function(f) {
    this.all[f.name] = f;
  },
  send: function(msg, to) {
    this.all[to.name].receve(msg);
  }
}
// 飞机
var Plane = function(name) {
  this.name = name;
}
Plane.prototype.send = function(msg, to) {
  console.log(`${this.name} 发送了消息`)
  // 通过中介者来发送消息,具体怎么发送不关心
  controlTower.send(msg, to)
}
Plane.prototype.receve = function(msg) {
  console.log(`${this.name}[接收到]${msg}`)
}

// 工厂对象
var PlaneFactory = function(name) {
  var f = new Plane(name)
  controlTower.register(f)
  return f
}

// 构建多个对象
var feiji_1 = PlaneFactory('feiji_1')
var feiji_2 = PlaneFactory('feiji_2')
var feiji_3 = PlaneFactory('feiji_3')

// 对象间通过中介者通信
feiji_1.send('马上降落', feiji_2);

# 总结

中介者对象专门负责模块间通信,各个模块并不维护对象间的关系。只用关注自身功能的实现。

上次更新: 9/23/2020, 6:18:43 PM