zoukankan      html  css  js  c++  java
  • 基于设计模式的学习之旅中介者(附源码)

              基于设计模式的学习之旅-----中介者

    1、初识中介者

    那些年,我们一起上过的大学,班级里有班长,有团书记。想一想如果没有QQ这种通讯工具的话,那么班长或者团支书该怎样下达消息呢??同时,班级上两个同学之间也可惜沟通啊,沟通一下,院里哪个女生,哪个帅哥呀~~~如果没有QQ的话,大概就是下面的情景:

    哎呀呀,看看这个乱那。如果同学的数目多起来就会变成网状的结构啦。原本把一个系统分割成一些对象是可以增强复用性的,但是现在的情况是,这些兑现之间存在着大量的联系,耦合性极高。这是很不利于复用的,同时这种情况使得系统的灵活性大大的降低,使得对系统的扩展很难,要是新转来一个学生的话,要改动的地方就多了去了

    如果现在可以使用QQ,那么可以采用另一种方式设计这个系统呢,比如做成星形的结构

    看看这种星形结构网状结构的区别吧,显然采用星形结构就可以避免上面的网状结构存在的问题了,实际上这里的QQ就是指的是中介,这样一来每个学生对象就不用存在耦合了,同学之间需要交流可以通过一个QQ群。

    2、什么是中介者

    用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从

    而使其耦合松散,而且可以独立地改变它们之间的交互。

    3、模式结构图

    4、模式代码事例

    场景:新年快到了,公司要给每位员工送年货。当然,公司不可能直接消耗人力资源自己往每个员工家里送物品,所以收集了每个员工的一些信息,通过快递公司为其送出物品。

    41涉及到的类,以及类图

    ExpressMediator(抽象的中介者)EMSExpressMediator(具体的中介者EMS快递)Colleage(抽象的同事类)Company(具体的同事类公司)Person(具体的同事类员工)

    42具体的代码实现

    ExpressMediator(抽象的中介者)

    EMSExpressMediator(具体的中介者EMS快递)

    Colleage(抽象的同事类)

    Company(具体的同事类公司)

    Person(具体的同事类员工)

    43事例输出结果

    5、模式参与者

    中介者(Mediator,如:ExpressMediator)

    具体中介者(ConcreteMediator,如EMSExpressMediator)

    同事类(Colleague,如CompanyPerson)

    6、模式优缺点

    A、减少了子类生成

    B、它将各C o l l e a g u e解耦

    C、它简化了对象协议

    D、它对对象如何协作进行了抽象

    E、它使控制集中化

    7、模式适用性

    A、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理

    B、一个对象引用其他很多对象并且直接与这些对象通信 ,导致难以复用该对象

    C、想定制一个分布在多个类中的行为,而又不想生成太多的子类

     

    点击下载“文档以及源码下载

    欢迎转载,请注明出处“http://www.cnblogs.com/luxiaofeng54/archive/2013/04/09/3010453.html

  • 相关阅读:
    2019-9-2-简单搭建自己的博客
    2018-7-15-WPF-在-DrawingContext-的-push-如何使用
    2018-7-15-WPF-在-DrawingContext-的-push-如何使用
    2019-7-3-Roslyn-理解-msbuild-的清理过程
    2019-7-3-Roslyn-理解-msbuild-的清理过程
    MySQL数据库事务详解
    求一个Map中最大的value值,同时列出键,值
    Struts1入门实例(简单登录)
    java字符流操作flush()方法及其注意事项
    HDU 1874 畅通工程续 2008浙大研究生复试热身赛(2)
  • 原文地址:https://www.cnblogs.com/luxiaofeng54/p/3010453.html
Copyright © 2011-2022 走看看