- 浏览: 18291 次
- 性别:
- 来自: 西安
最新评论
Mediator Pattern: 用一个中介对象来封装一系列关于对象交互行为.
为何使用Mediator?
各个对象之间的交互操作非常多;每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用Mediator模式,可以使各个对象间的耦合松散,只需关心和 Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展性.
Event.java
package com.flyingh.event; import com.flyingh.mediator.Mediator; public interface Event { void onEventA(); void onEventB(); void onEventC(); void onEventD(); void setMediator(Mediator mediator); }
Mediator.java
package com.flyingh.mediator; public interface Mediator { void actionA(); void actionB(); void actionC(); void actionD(); }
A.java
package com.flyingh.event; import com.flyingh.mediator.Mediator; public class A implements Event { private Mediator mediator; public Mediator getMediator() { return mediator; } public void setMediator(Mediator mediator) { this.mediator = mediator; } @Override public void onEventA() { mediator.actionA(); } @Override public void onEventB() { System.out.println("EventB发生,A作出相应的反应!"); } @Override public void onEventC() { System.out.println("EventC发生,A作出相应的反应!"); } @Override public void onEventD() { System.out.println("EventD发生,A作出相应的反应!"); } }
B.java
package com.flyingh.event; import com.flyingh.mediator.Mediator; public class B implements Event { private Mediator mediator; @Override public void onEventB() { mediator.actionB(); } @Override public void onEventA() { System.out.println("EventA发生,B作出相应的反应!"); } @Override public void onEventC() { System.out.println("EventC发生,B作出相应的反应!"); } @Override public void onEventD() { System.out.println("EventD发生,B作出相应的反应!"); } @Override public void setMediator(Mediator mediator) { // TODO Auto-generated method stub this.mediator = mediator; } }
C.java
package com.flyingh.event; import com.flyingh.mediator.Mediator; public class C implements Event { private Mediator mediator; @Override public void onEventC() { mediator.actionC(); } @Override public void onEventA() { System.out.println("EventA发生,C作出相应的反应!"); } @Override public void onEventB() { System.out.println("EventB发生,C作出相应的反应!"); } @Override public void onEventD() { System.out.println("EventD发生,C作出相应的反应!"); } @Override public void setMediator(Mediator mediator) { // TODO Auto-generated method stub this.mediator = mediator; } }
D.java
package com.flyingh.event; import com.flyingh.mediator.Mediator; public class D implements Event { private Mediator mediator; @Override public void onEventD() { mediator.actionD(); } @Override public void onEventA() { System.out.println("EventA发生,D作出相应的反应!"); } @Override public void onEventB() { System.out.println("EventB发生,D作出相应的反应!"); } @Override public void onEventC() { System.out.println("EventC发生,D作出相应的反应!"); } @Override public void setMediator(Mediator mediator) { // TODO Auto-generated method stub this.mediator = mediator; } }
ConcreteMediator.java
package com.flyingh.mediator; import com.flyingh.event.Event; public class ConcreteMediator implements Mediator { private Event a; private Event b; private Event c; private Event d; public ConcreteMediator(Event a, Event b, Event c, Event d) { super(); this.a = a; this.b = b; this.c = c; this.d = d; } @Override public void actionA() { b.onEventA(); c.onEventA(); d.onEventA(); } @Override public void actionB() { a.onEventB(); c.onEventB(); d.onEventB(); } @Override public void actionC() { a.onEventC(); b.onEventC(); d.onEventC(); } @Override public void actionD() { a.onEventD(); b.onEventD(); c.onEventD(); } }
Client.java
package com.flyingh.demo; import com.flyingh.event.A; import com.flyingh.event.B; import com.flyingh.event.C; import com.flyingh.event.D; import com.flyingh.event.Event; import com.flyingh.mediator.ConcreteMediator; import com.flyingh.mediator.Mediator; public class Client { public static void main(String[] args) { Event a = new A(); Event b = new B(); Event c = new C(); Event d = new D(); Mediator mediator = new ConcreteMediator(a, b, c, d); a.setMediator(mediator); b.setMediator(mediator); c.setMediator(mediator); d.setMediator(mediator); a.onEventA(); System.out.println("**********"); b.onEventB(); System.out.println("**********"); c.onEventC(); System.out.println("**********"); d.onEventD(); } }
程序运行结果如下:
EventA发生,B作出相应的反应! EventA发生,C作出相应的反应! EventA发生,D作出相应的反应! ********** EventB发生,A作出相应的反应! EventB发生,C作出相应的反应! EventB发生,D作出相应的反应! ********** EventC发生,A作出相应的反应! EventC发生,B作出相应的反应! EventC发生,D作出相应的反应! ********** EventD发生,A作出相应的反应! EventD发生,B作出相应的反应! EventD发生,C作出相应的反应!
发表评论
文章已被作者锁定,不允许评论。
-
Interpreter
2011-11-24 21:19 837Interpreter Pattern:其意图是给定一个语言, ... -
Visitor
2011-11-24 17:37 658Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Prototype
2011-11-24 11:32 605Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 684Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 650享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 763Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 684桥梁模式的用意是"将抽象化(Abstraction) ... -
Chain Of Responsibility
2011-11-21 23:05 657Chain Of Responsibility Pattern ... -
Abstract Factory
2011-11-21 22:00 644下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 660Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 677State Pattern:当一个对象的内在状态改变时允许改变 ... -
Composite
2011-11-17 17:09 792Composite Pattern:意图是将对象组合成树形结构 ... -
Iterator
2011-11-16 16:56 888Iterator Pattern:其意图是提供一种方法顺序访问 ... -
Template Method
2011-11-16 11:43 659模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Facade
2011-11-15 23:00 596Facade Pattern:为子系统中的各类(或结构与方法) ... -
Adapter
2011-11-15 21:43 630Adapter Pattern:将一个类的接口,转换成客户所期 ... -
Command
2011-11-14 23:06 5721).下面以Boss和Clerk为例: Clerk.java ... -
Factory Method
2011-11-13 20:44 595Simple Factory: 以Fruit为例,以下是实现 ... -
Decorator
2011-11-12 23:09 570装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 600观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
**中介者模式(Mediator Pattern)** 中介者模式是一种行为设计模式,它的主要目标是减少对象之间的耦合性,通过引入一个中介对象来协调多个对象之间的交互。在传统的多对象交互场景中,对象之间可能存在复杂的依赖...
**中介者模式(Mediator)详解** 在软件工程中,设计模式是一种被广泛采用的解决常见问题的经验总结,其中中介者模式是结构型设计模式的一种。它的主要目标是降低对象之间的耦合度,使得对象之间的关系更加清晰,...
### C++设计模式之Mediator(中介者)详解 #### 一、引言 在软件开发过程中,随着系统的复杂度逐渐增加,各个组件之间的交互变得越来越频繁,这不仅增加了系统的耦合度,还使得系统维护变得困难重重。为了解决这一...
**Mediator模式** Mediator模式是一种行为设计模式,它定义了一个用来封装一系列对象相互作用的接口,使得这些对象不必显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。这种模式在软件开发...
**设计模式之中介者模式(Mediator Pattern)** 在软件工程中,设计模式是一种解决常见问题的经验总结,它提供了一种可复用的解决方案。中介者模式是行为设计模式之一,其主要目的是降低多个对象之间的复杂性,通过...
**C++ Mediator模式详解** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图,它提供了一种在不违反面向对象原则的前提下,提高代码可复用性和可维护性的方法。Mediator模式是其中的一种行为模式...
Matchware mediator 9.0.152版的破解补丁,替换安装程序下的同名文件即可。
webMethods 9.0 Mediator是软件AG旗下webMethods开发平台中的一个关键组件,用于实现服务集成和管理。通过本文,我们将详细介绍webMethods Mediator的功能和作用。 首先,webMethods Mediator是什么?webMethods ...
标题中的"Mediator_C++_"可能指的是在C++编程中使用中介者模式(Mediator Pattern)来设计一个系统,特别是用于调整特征提取的参数。在图像处理领域,边缘检测是关键步骤之一,它有助于识别图像的重要结构。描述中...
Mediator是一款在欧洲备受推崇的多媒体著作工具,以其强大的多媒体集成能力和美观的显示效果而闻名。与Authorware相比,Mediator在设计上更注重个性化和用户的审美习惯。本文将详细介绍Mediator的一些主要特性。 ...
public void setMediator(Mediator mediator) { this.mediator = mediator; } public void sendMessage(String message) { mediator.send(message, this); } public void receiveMessage(String message) {...
基于Mediator平台的CAD与PDM集成技术是一项旨在解决计算机辅助设计(Computer Aided Design, CAD)软件与产品数据管理系统(Product Data Management, PDM)之间集成问题的研究。该研究的目标是提高CAD与PDM系统的...
中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的直接相互依赖,使得对象间的交互通过一个中介者对象来进行协调。在中介者模式中,对象之间不再直接相互调用,而是通过中介者对象来传递消息...
### Cisco Mobile Wireless Fault Mediator (MWFM) 4.1:功能与技术解析 #### 一、概述 Cisco Mobile Wireless Fault Mediator(MWFM)4.1是Cisco Systems推出的一款移动网络管理工具,旨在为基于Cisco Mobile ...
1. **中介者(Mediator)**: 这是模式的核心,它定义了各个同事对象之间的通信接口。中介者通常维护着对所有同事对象的引用,并负责协调它们之间的交互。 2. **具体中介者(Concrete Mediator)**: 实现中介者接口...
**中介者模式(Mediator)**是一种设计模式,属于行为设计模式范畴,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在软件工程中,中介者模式常...
中介者模式的完整代码。 程序默认使用vs开发。其他开发工具可能需要做少许调整。
**中介者模式(Mediator Pattern)**是一种行为设计模式,其主要目的是降低多个对象之间的通信复杂性,将这些对象的直接交互转化为与一个中心对象——中介者的交互。在C#中,中介者模式的应用能够有效地减少类之间的...
在软件设计模式中,"Mediator"(中介者)是一种结构型模式,它定义了一个用于解耦多个对象之间交互的接口。这种模式的主要目的是降低对象之间的耦合度,使得对象之间的关系更加灵活,更容易维护和扩展。在...