`
wdt1988520
  • 浏览: 15512 次
社区版块
存档分类
最新评论

中介者模式(Mediator Pattern)

 
阅读更多

中介者模式又称调停者模式,属行为模式。

 用一个中介者来封装多个对象之间负责的交互行为,中介者对象使各交互对象之间不需显示的声明相互引用,从而使对象之间松耦合,而且可以独立的改变他们之间的交互行为。

 

 

 

角色分析:

     Mediator(抽象中介者):

        定义同事类之间的通讯接口。

    ConcreteMediator(具体中介者):

        实现同事类之间的通讯接口,并维护它对各个同事类的引用。

     Colleague(抽象同事类):

       定义同事类的公共方法

    ConcreteColleague(具体同事类):

       具体同事类为抽象同事类的子类,每一个同事类都会引用一个中介者对象,同事类之间的通讯,先告知中介者,由中介者完成通讯过程。

 

使用场景:

       1、多个对象之间存现相互的引用。

       2、一个对象对多个对象之间有通信,可将通信行为放入中介者,从而将那个对象独立出来。

 

例:网上简易聊天室

package mediator;


/**
 *create by datao.wang 2014-2-10-上午10:40:32	
 *抽象中介者  聊天房间
 */
public abstract class AbstractChatroom {
    //注册成员
	public abstract void regiser(Member member);
	//发送消息
	public abstract void sendText(String from,String to,String message);
}


package mediator;

import java.util.HashMap;
import java.util.Map;


/**
 *create by datao.wang 2014-2-10-上午10:45:57	
 *具体中介者
 */
public class Chatroom extends AbstractChatroom {
    //引用同事对象
	private Map<String,Member> map=new HashMap<String,Member>();
	@Override
	public void regiser(Member member) {
		if(map.get(member.getName())==null){
			map.put(member.getName(),member);
		}
	}

	@Override
	public void sendText(String from,String to,String message) {
		Member member=map.get(to);
		if(member!=null){
			member.receiveMessage(from,message);
		}
	}

}


package mediator;
/**
 *create by datao.wang 2014-2-10-上午10:48:58	
 * 抽象同事角色
 */
public abstract class Member {
	//对中介者的引用
	public AbstractChatroom chatroom;
  
  	public  String name;
  	
  	public abstract void receiveMessage(String from,String message);
  	
	public abstract void sendMessage(String to,String message);

	public AbstractChatroom getChatroom() {
		return chatroom;
	}
	
	public void setChatroom(AbstractChatroom chatroom) {
		this.chatroom = chatroom;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
  
}


package mediator;
/**
 *create by datao.wang 2014-2-10-上午11:11:12	
 *具体同事角色
 */
public class ConcreteMember extends Member {

	public ConcreteMember(String name){
		this.name=name;
	}
	@Override
	public void receiveMessage(String from, String message) {
		System.out.println(message+"----------------------");
	}

	@Override
	public void sendMessage(String to, String message) {
		this.chatroom.sendText(this.getName(), to, message);
	}
	
}


 

分享到:
评论

相关推荐

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

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

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

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

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

    标题和描述均提到了"C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式",这明确指向了一个特定的设计模式——中介者模式(Mediator Pattern),并且是在C#语言环境下的应用。下面将详细阐述这一设计...

    PHP设计模式之中介者模式(Mediator Pattern)入门与应用案例详解

    咱们先来看下中介者模式(Mediator Pattern)的定义,它就是,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,这种模式又称为调停...

    设计模式 - 中介者模式(C++实例)

    **中介者模式(Mediator Pattern)**是一种行为设计模式,它定义了一个用来封装一系列对象交互的接口。在软件工程中,当多个对象之间存在复杂的相互依赖关系时,这种模式可以帮助我们降低系统的耦合度,使得各个对象...

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

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

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

    Java设计模式中的中介者模式(Mediator Pattern)是一种行为设计模式,它的主要目的是降低多个对象之间的耦合性,使得这些对象之间不必显式地互相引用,而是通过一个中介对象进行通信。这种模式使得对象间的交互更为...

    java常用设计模式-中介者模式

    中介者模式(Mediator Pattern)是一种行为设计模式,它允许对象之间通过中介者对象进行通信,从而避免对象之间的直接耦合。中介者模式将对象之间的复杂关系转化为中介者和对象之间的简单关系,从而提高了系统的灵活...

    mediator模式

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

    [行为型模式] 中介者模式的理解

    在`MediatorPattern.cpp`和`MediatorPattern.h`这两个文件中,我们可以预期看到中介者模式的具体实现。`MediatorPattern.h`可能包含了中介者和同事类的定义,而`MediatorPattern.cpp`则实现了这些类的成员函数。 ...

    一个演示中介者模式的例子我们用的生活中的定外卖的现象做示例.zip

    在软件设计领域,中介者模式(Mediator Pattern)是一种行为设计模式,旨在减少一组对象之间的通信复杂性。它允许对象之间通过一个中介者对象进行通信,从而避免了直接的相互引用。在日常生活中,定外卖的现象就是一...

    Java 23种设计模式21中介者模式.pdf

    中介者模式(Mediator Pattern)是一种行为设计模式,用于封装一组对象间的交互。通过中介者对象,各对象不需要直接引用彼此,而是通过中介者进行间接通信,从而实现了对象间的松耦合。这一模式不仅简化了对象之间的...

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

    中介者模式(Mediator Pattern)是一种行为设计模式,它的主要目的是降低多个对象或类之间的通信复杂性。在软件工程中,当多个对象之间存在复杂的相互依赖关系时,维护这些关系可能会变得困难。中介者模式通过引入一...

    C#版 24种设计模式

    提供者模式(Provider Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 责任链模式(Chain of Responsibility Pattern) 中介者模式(Mediator Pattern) 装饰模式...

    iOS的中介者设计模式

    在提供的"mediatorPattern中介者设计模式"文件中,可以看到具体的代码实现。这里通常会有以下组成部分: 1. `Mediator`协议:定义了中介者应具有的方法,例如`addColleague:`, `removeColleague:`以及协调同事之间...

    Java设计模式之中介者模式-动力节点共6页.pdf.z

    其中一种重要模式是“中介者模式”(Mediator Pattern)。中介者模式的主要目的是降低多个对象之间的耦合度,通过引入一个中介对象来协调这些对象之间的交互。在Java开发中,这种模式被广泛应用于实现组件间的松耦合...

    java中介者模式.docx

    在Java编程中,中介者模式(Mediator Pattern)是一种行为设计模式,它的主要目的是为了简化对象之间的通信,减少对象间的耦合。在传统的对象交互中,每个对象都可能直接与其他对象进行通信,导致复杂的依赖关系。...

    C#设计模式_设计模式_C#_

    中介者模式(Mediator Pattern) 19. 职责链模式(Chain of Responsibility Pattern) 20. 备忘录模式(Memento Pattern) 21. 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)

    设计模式PPT

     中介者模式(Mediator Pattern)  备忘录模式(Memento Pattern)  观察者模式(Observer Pattern)  状态模式(State Pattern)  策略模式(Strategy Pattern)  模板方法模式(Template Method ...

Global site tag (gtag.js) - Google Analytics