`

Design Pattern: Mediator 模式

阅读更多

Mediator的意思是中介者、调节者、传递物,顾名思义,这个模式在程式中必然负担一个中介、调节、传递的工作。

物件导向设计中,每个物件所负担的工作尽可能的简单明了,鼓励物件将工作分布至其它物件上,让一群工作属性相同的物件得以共同合作,即所谓高聚合性,以增加物件的可重用性。

然而在组织物件工作的同时,物件彼此之间可能知道彼此的存在,并相互依赖,这就使得物件之间的耦合性相对的提高,最差的情况下,所有的物件都知道彼此的存在,这又会使得系统的重用性降低。

Mediator模式用一个中介的物件来封装物件彼此之间的交互,物件之间并不用互相知道另一方,这可以降低物件之间的耦合性,如果要改变物件之间的交互行为,也只需要对Mediator加以修改即可。

Gof 的书 中所举的例子为对话方块组件;例如,当一个特定的输入栏为空时,另一个按钮不能使用;在ListBox的选项中选择一个项目,将会改变另一个栏位的内容;反过来的,输入栏位的内容也会影响ListBox的选择等等。


在这个例子中,可以设计对话方块中的组件知道彼此的存在,由一个直接影响另一个(或多个)组件,但最好的方法,还是设计一个Mediator,由它来协调组件之间的交互,例如设计一个FontDialogDirector类别来作为中介者。

可以从Sequence Diagram来了解Mediator的运作,当ListBox发生变化时,它会呼叫Mediator的listBoxChanged()方法,Mediator取得变化的组件之状态,并重新设定所有与它有交互的组件,同样的,其它的组件发生变化时,也呼叫Mediator上对应的方法,由Mediator来取得组件变化,并设定其它互动的组件。

简单的说,Mediator设计有与组件沟通的介面,介面中封装了与其它组件互动细节,组件与组件之间不用知道彼此的存在,它们只要与Mediator沟通就好了,利用这种方式,可以切开组件与组件之间的耦合。

Mediator模式的 UML 结构图如下所示:

基本上Mediator模式在使用的弹性很大,由Sequence Diagram理解概念,会比从Class Diagram了解结构来得重要,不过在Class Diagram中可以注意的是类别的名称,Colleague是同事的意思,将一群共事的元件视为一群共同合作的同事,为了使同事之间的活动独立,并使得团队合作的交互更具弹性,需要一个Mediator来协调同事之间的业务行为。

分享到:
评论

相关推荐

    DesignPattern::pencil:设计模式_java实现以及详解

    本资源“DesignPattern::pencil:设计模式_java实现以及详解”提供了一套详细的学习材料,帮助开发者理解和应用设计模式。 该资源的作者是“养码青年-Style”,他通过这个项目记录了自己的设计模式学习过程。鼓励...

    DesignPattern:设计模式

    DesignPattern-master这个压缩包可能包含了一个关于设计模式的项目或者教程资源。 设计模式分为三类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)...

    DesignPattern:设计模式演示程序

    这个名为"DesignPattern"的压缩包文件很可能包含了一个Java实现的各种设计模式的示例程序。 在这个"DesignPattern-master"目录中,我们可以期待找到一系列与设计模式相关的Java源代码文件(.java),每个文件或...

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...

    DesignPattern:C#设计模式示例

    "DesignPattern:C#设计模式示例"这个资源很可能是包含多个C#实现的设计模式示例代码库。 设计模式通常分为三类:创建型、结构型和行为型。每种模式都解决了特定场景下的问题,并提供了良好的代码组织和扩展性。 ...

    DesignPattern:设计模式的学习笔记和示例代码

    设计模式是软件工程中的一种最佳实践,它是在特定情境下解决常见问题的经验总结。...在DesignPattern-master这个压缩包中,你可以找到关于这些模式的详细讲解和实例代码,为你的Java开发之旅提供宝贵的参考资料。

    运用Mediator设计模式的登录对话框

    这是一个运用了中介者设计模式的登录对话框练习题。... wich try to illustrate the design pattern of Mediator. The program adapt from the book 《design pattern: using in java》 by Yuuki Hiroshi.

    Design Pattern(设计模式)讲义

    ### Design Pattern(设计模式)讲义 #### 一、引言 设计模式是软件工程领域的一个重要主题,它提供了一套解决常见问题的方案。侯捷老师的讲义为我们揭示了设计模式背后的原理与实践方法。这份讲义不仅包含了GoF...

    design pattern PPT

    设计模式(Design Pattern)是软件工程中用于解决软件设计问题的既定方案。设计模式并非直接的代码实现,而是一套被验证过的通用解决方案模板。它们是由经验丰富的软件开发者总结出的,在特定上下文中对常见问题的...

    Design Pattern英文版

    设计模式(Design Pattern)是软件工程中的一种经验总结,它是在特定上下文中为解决常见问题而提出的一套可复用的解决方案。设计模式并不直接实现为代码,而是提供了一种在面向对象设计中如何处理常见问题的指南。...

    java设计模式详解,java design pattern

    2. 中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互。中介者模式使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 在Java中,这些设计模式在很多...

    design-pattern:标准设计模式的实施

    本资源"design-pattern:标准设计模式的实施"很可能是关于如何在Java中应用经典设计模式的详细指南。 设计模式分为三大类:创建型模式、结构型模式和行为型模式。每种模式都有其特定的目的和应用场景。 1. 创建型...

    Java-DesignPattern:Java中23种常见的设计模式

    本资料包“Java-DesignPattern:Java中23种常见的设计模式”涵盖了软件设计中的重要概念,以下是这些模式的详细说明: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。防止其他对象多次...

    designpattern.zip

    本资源"designpattern.zip"包含了对Java中23种经典设计模式的详细讲解和代码实例,对于中高级Java工程师来说,是提升开发技能的必备学习材料。 设计模式通常分为创建型、结构型和行为型三大类。创建型设计模式关注...

    Design Pattern 简明手册

    ### Design Pattern 简明手册知识点详述 ...以上是对Design Pattern简明手册中的知识点的详细说明,每种设计模式都有其特定的应用场景和优点,掌握这些模式能够帮助开发人员更好地解决实际开发中的问题。

    C++面向对象23种设计模式实现源码DesignPattern.zip

    本资源“DesignPattern.zip”包含了23种经典的面向对象设计模式的C++实现源码,这对于学习和理解这些模式的原理及应用具有极大的帮助。 1. **解释器模式(Interpreter Pattern)**:解释器模式主要用于创建一个解析...

    JAVA design pattern-java设计模式

    在这个名为"JAVA design pattern-java设计模式"的CHM文件中,我们可能找到了关于如何在Java开发中应用设计模式的详细信息。 设计模式通常分为三大类:创建型、结构型和行为型。创建型模式关注对象的创建,如单例...

    designPatterns:设计模式

    design pattern 设计模式 创建型设计模式 创建型模式设计到将对象实例化,这类模式都提供了一个方法,将客户从所需要的实例化对象中解耦。 原型模式 Prototype 结构型设计模式 结构型模式可以让你把类或者对象组合到...

Global site tag (gtag.js) - Google Analytics