我也设计模式——19.Mediator

中介者的神奇在于我们天天在使用却丝毫感觉不到:WindowsForm和WebForm


如果说Observer是一种1对多的模式,那么中介者就是一种多对多的模式,是Observer更普遍的方式。
    现实中最好的事例就是房屋中介所:某人想买房子,这期间要办理一大堆手续,会把买卖双方都搞死的,尤其是买方。于是中介机构出现了,买方只面对中介,中介会为其办理所有手续。当买方的人越来越多时,中介的作用越来越明显。


我们把中介者的UML图变一下形状,可以得到:

于是我们得到了Observer的改良版,只是多了一个继承于Colleague的子类ConcreteColleague2,这说明:

    1.由于ConcreteMediator其实是一个具体的Observer,而它又添加了对ConcreteColleague2的引用,所以ConcreteColleague2也可以看作是一个具体的Observer

    2.每个ConcreteColleague都能成为被观察的对象Subject,也能作为观察者Observer中的一员

    3.对应于不同的被观察对象Subject,ConcreteMediator可以有多个Update()方法,由Update()方法决定引起哪些Observer变化:

        比如说上图,ConcreteColleague1作为Subject,对应Update(),该方法中可以操纵c2:    c2.DoSomething2();

        如果又以ConcreteColleague2作为Subject,对应Update2(),该方法同时操纵c2和c3:      c3.Domething3(); c2.DoSomething2();————这里c3为另一个ConcreteColleague3对象


下面我们看Form窗体,这是基于委托来实现的:

虽然所有的控件的基类都是Control,但有可能不是直接派生的————即可能是祖孙辈份,所以使用委托可以解除Control与其控件的耦合性



posted @ 2007-10-25 15:50 包建强 阅读(89) 评论(0)  编辑 收藏 网摘 所属分类: Design Patterns

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-10-26 16:07 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: