再一次,javascript设计模式与开发实践-中介者模式

简述

解除对象与对象之间的紧耦合关系。

当飞机想要降落时,会通知指挥塔,指挥塔安排降落,而不必和其他飞机通信,来保证安全。
购买足球彩票,只需要把钱交给博彩公司,博彩公司负责收钱和发钱,而不必与其他人交换信息。

使用场景

  • 游戏
  • 购物订单
  • ..

案例

如果要写一个购物订单程序,使用中介者模式是个很好的方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>
选择颜色:
<select id="colorSelect">
<option value="">请选择</option>
<option value="蓝色">蓝色</option>
<option value="红色">红色</option>
</select>

选择内存:
<select id="memorySelect">
<option value="">请选择</option>
<option value="32G">64G</option>
<option value="64G">32G</option>
</select>
<hr>
您选择了颜色:<div id="colorInfo"></div>
您选择了内存:<div id="memoryInfo"></div>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var mediator = (function() {
var colorSelect = document.querySelector('#colorSelect'),
memorySelect = document.querySelector('#memorySelect'),
colorInfo = document.querySelector('#colorInfo'),
memoryInfo = document.querySelector('#memoryInfo');

return {
changed: function(obj) {
var color = colorSelect.value,
memory = memorySelect.value;

if (obj === colorSelect) {
colorInfo.innerHTML = color;
} else if (obj === memorySelect) {
memoryInfo.innerHTML = memory;
}
}
};
})();

colorSelect.onchange = function() {
mediator.changed(this);
};

memorySelect.onchange = function() {
mediator.changed(this);
};