设计模式之中介者模式

中介者模式

中介者模式(Mediator Pattern):定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。
(注意:中介者模式和代理模式字面意思相近,但却是完全不同的模式)

模式作用:

  1. 在软件开发中,中介者是一个行为设计模式,通过提供一个统一的接口让系统不同部分进行通信.一般,如果系统有很多子模块需要直接沟通,都要创建一个中央控制点让其各模块通过中央控制点进行交互.中介者模式可以让这些子模块不需要直接沟通,从而达到进行解耦的目的.

注意事项:

  1. 当系统出现了多对多交互复杂的对象群时,先不急于使用中介者模式,而是思考一下是不是系统设计有问题.

例子:

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 feiji=function(name){
this.name=name;
}
feiji.prototype.send=function(msg,to){
console.log(this.name+"发送了信息")
tatai.send(msg,to)
}
feiji.prototype.jieshou=function(msg){
console.log(this.name+"[接收到]"+msg)
}
//塔台
var tatai={
all:{},
zhuce:function(f){
this.all[f.name]=f;
},send:function(msg,to){
this.all[to.name].jieshou(msg)
}
}
var feiji1=new feiji("feiji1");
var feiji2=new feiji("feiji2");
tatai.zhuce(feiji1);
tatai.zhuce(feiji2);
feiji1.send('我马上降落,还有200米',feiji2)
//feiji1发送了信息
//feiji2[接收到]我马上降落,还有200米