作用:
用一个中介对象来封装一系列的对象操作。中介者使各对象不需要显式地相互交互,从而使其耦合松散,而且可以独立地改变它们之间的交互。
正文:
中介者模式是一个简单易用的模式。也许很多人在实际的项目中都已经用到过了,只是不知道它就是中介者模式。它把多对多的交互变成了一对多的交互,从而简化的交互,理清了思路。
让我们来看个例子。
去年买了一套二手房(在杭州没钱的人只能这样了),中间的手续还是挺多的,看了让人心慌。
粗略的列了下:
1. 自己要和房东讲价钱。
2. 到银行贷款。
3. 卖方也是银行贷款的,要把我的帐户钱转到卖方帐户上。
4. 到政府机构办理证件。
我这里把政府机构简化了,因为办的证太多,涉及的部门也很多,在中国就是这样,七证八税的,而且这些部门都分开,让你跑的死去活来。
看来还是通过房屋买卖中介吧,他们对这一行业都很熟悉,办的速度也快,就是要破财,心疼啊。
这样,条理就清楚多了。
1. 我让中介去谈价。
2. 中介为我办理贷款的一切手续。
3. 我把钱打入中介开的一个中转帐户。
4. 中介为我办理证件。
这样我唯一接触的对象就是房屋买卖中介,有事我就找中介,中介需要我的时候,就会联系我,我还是边工作边买房,。这多简单,当然在这里我深深地体会的钱的好处。
到这里,我想读者可能明白了中介者模式了。那接下来就上升到理论了。
Mediator:(中介者)
定义了接口与各同事类交互。
CConcreteMediator:(具体中介者)
创建并协调各个同事类。
Colleague Class: (同事类)
每个同事者都知道中介者对象。
在需要与其它同事类通讯时,通知中介者。
在这里,一个同事类要与其它同事类通讯时,要通知中介者,然后由中介者去通知其要通讯的同事类,是不是可以用上观察者模式(Observer)了?每个同事类都是被观察者,而中介对象就是观察者。
中介者模式断绝各个同事类之间的直接交互,把复杂的交互交给了中介者。“与其多个人累,不如我一个人来累”,这就是中介者模式的精神。