# 设计模式:中介者模式
# 什么是中介者模式
用一个中间对象来封装一系列对象的交互,对象间不需要互相引用。从而实现松耦合,而且还可以独立的改变他们之间的交互
案例:
机场塔台用来调度飞机的起飞和降落,塔台就是中介者。如果没有塔台各个机长之间相互协调将是一个非常繁杂的工作,每一个飞机的起飞和降落都要通知其他的飞机这是非常繁琐的。
# 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);
# 总结
中介者对象专门负责模块间通信,各个模块并不维护对象间的关系。只用关注自身功能的实现。
← 设计模式:职责链模式 设计模式:装饰器模式 →