`
Flyingh
  • 浏览: 18291 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Mediator

 
阅读更多

 

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作出相应的反应!
 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    mediator模式

    **中介者模式(Mediator Pattern)** 中介者模式是一种行为设计模式,它的主要目标是减少对象之间的耦合性,通过引入一个中介对象来协调多个对象之间的交互。在传统的多对象交互场景中,对象之间可能存在复杂的依赖...

    设计模式之中介者模式(Mediator)

    **中介者模式(Mediator)详解** 在软件工程中,设计模式是一种被广泛采用的解决常见问题的经验总结,其中中介者模式是结构型设计模式的一种。它的主要目标是降低对象之间的耦合度,使得对象之间的关系更加清晰,...

    C++设计模式课件17_Mediator_中介者.pdf

    ### C++设计模式之Mediator(中介者)详解 #### 一、引言 在软件开发过程中,随着系统的复杂度逐渐增加,各个组件之间的交互变得越来越频繁,这不仅增加了系统的耦合度,还使得系统维护变得困难重重。为了解决这一...

    Mediator模式

    **Mediator模式** Mediator模式是一种行为设计模式,它定义了一个用来封装一系列对象相互作用的接口,使得这些对象不必显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。这种模式在软件开发...

    设计模式之中介者模式(Mediator Pattern)

    **设计模式之中介者模式(Mediator Pattern)** 在软件工程中,设计模式是一种解决常见问题的经验总结,它提供了一种可复用的解决方案。中介者模式是行为设计模式之一,其主要目的是降低多个对象之间的复杂性,通过...

    C++ Mediator模式

    **C++ Mediator模式详解** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图,它提供了一种在不违反面向对象原则的前提下,提高代码可复用性和可维护性的方法。Mediator模式是其中的一种行为模式...

    Matchware mediator 9.0.152

    Matchware mediator 9.0.152版的破解补丁,替换安装程序下的同名文件即可。

    webMethods 9.0 _ Mediator 详解

    webMethods 9.0 Mediator是软件AG旗下webMethods开发平台中的一个关键组件,用于实现服务集成和管理。通过本文,我们将详细介绍webMethods Mediator的功能和作用。 首先,webMethods Mediator是什么?webMethods ...

    Mediator_C++_

    标题中的"Mediator_C++_"可能指的是在C++编程中使用中介者模式(Mediator Pattern)来设计一个系统,特别是用于调整特征提取的参数。在图像处理领域,边缘检测是关键步骤之一,它有助于识别图像的重要结构。描述中...

    多媒体著作工具-Mediator一款流行于欧洲的热议的优秀软件

    Mediator是一款在欧洲备受推崇的多媒体著作工具,以其强大的多媒体集成能力和美观的显示效果而闻名。与Authorware相比,Mediator在设计上更注重个性化和用户的审美习惯。本文将详细介绍Mediator的一些主要特性。 ...

    Mediator 中介模式Java版

    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集成.pdf

    基于Mediator平台的CAD与PDM集成技术是一项旨在解决计算机辅助设计(Computer Aided Design, CAD)软件与产品数据管理系统(Product Data Management, PDM)之间集成问题的研究。该研究的目标是提高CAD与PDM系统的...

    中介者模式(Mediator Pattern)原理图

    中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的直接相互依赖,使得对象间的交互通过一个中介者对象来进行协调。在中介者模式中,对象之间不再直接相互调用,而是通过中介者对象来传递消息...

    Cisco Mobile Wireless Fault Mediator产品手册

    ### Cisco Mobile Wireless Fault Mediator (MWFM) 4.1:功能与技术解析 #### 一、概述 Cisco Mobile Wireless Fault Mediator(MWFM)4.1是Cisco Systems推出的一款移动网络管理工具,旨在为基于Cisco Mobile ...

    12-Mediator.rar

    1. **中介者(Mediator)**: 这是模式的核心,它定义了各个同事对象之间的通信接口。中介者通常维护着对所有同事对象的引用,并负责协调它们之间的交互。 2. **具体中介者(Concrete Mediator)**: 实现中介者接口...

    中介者模式(mediator)

    **中介者模式(Mediator)**是一种设计模式,属于行为设计模式范畴,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在软件工程中,中介者模式常...

    设计模式 Mediator 中介者 c++

    中介者模式的完整代码。 程序默认使用vs开发。其他开发工具可能需要做少许调整。

    C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式 (Level 300)

    **中介者模式(Mediator Pattern)**是一种行为设计模式,其主要目的是降低多个对象之间的通信复杂性,将这些对象的直接交互转化为与一个中心对象——中介者的交互。在C#中,中介者模式的应用能够有效地减少类之间的...

    Mediator.zip

    在软件设计模式中,"Mediator"(中介者)是一种结构型模式,它定义了一个用于解耦多个对象之间交互的接口。这种模式的主要目的是降低对象之间的耦合度,使得对象之间的关系更加灵活,更容易维护和扩展。在...

Global site tag (gtag.js) - Google Analytics