源码工作室

目标:通俗的语言说出通俗的技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

侃中介者模式(Mediator)

Posted on 2005-11-21 16:56  源码工作室  阅读(4413)  评论(5编辑  收藏  举报
侃中介者模式

作用:
       用一个中介对象来封装一系列的对象操作。中介者使各对象不需要显式地相互交互,从而使其耦合松散,而且可以独立地改变它们之间的交互。

正文:

       中介者模式是一个简单易用的模式。也许很多人在实际的项目中都已经用到过了,只是不知道它就是中介者模式。它把多对多的交互变成了一对多的交互,从而简化的交互,理清了思路。

       让我们来看个例子。
        
      

       去年买了一套二手房(在杭州没钱的人只能这样了),中间的手续还是挺多的,看了让人心慌。

       粗略的列了下:

1.         自己要和房东讲价钱。

2.         到银行贷款。

3.         卖方也是银行贷款的,要把我的帐户钱转到卖方帐户上。

4.         到政府机构办理证件。

 

我这里把政府机构简化了,因为办的证太多,涉及的部门也很多,在中国就是这样,七证八税的,而且这些部门都分开,让你跑的死去活来。

看来还是通过房屋买卖中介吧,他们对这一行业都很熟悉,办的速度也快,就是要破财,心疼啊。

  
    
这样,条理就清楚多了。

1.         我让中介去谈价。

2.         中介为我办理贷款的一切手续。

3.         我把钱打入中介开的一个中转帐户。

4.         中介为我办理证件。

       这样我唯一接触的对象就是房屋买卖中介,有事我就找中介,中介需要我的时候,就会联系我,我还是边工作边买房,。这多简单,当然在这里我深深地体会的钱的好处。

       到这里,我想读者可能明白了中介者模式了。那接下来就上升到理论了。

Mediator:(中介者

定义了接口与各同事类交互。

CConcreteMediator:(具体中介者

创建并协调各个同事类。

Colleague Class: (同事类)

每个同事者都知道中介者对象。

在需要与其它同事类通讯时,通知中介者。

 

       在这里,一个同事类要与其它同事类通讯时,要通知中介者,然后由中介者去通知其要通讯的同事类,是不是可以用上观察者模式(Observer)了?每个同事类都是被观察者,而中介对象就是观察者。

       中介者模式断绝各个同事类之间的直接交互,把复杂的交互交给了中介者。“与其多个人累,不如我一个人来累”,这就是中介者模式的精神。