`
gary0416
  • 浏览: 333514 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mediator模式

阅读更多

用一个中介对象来封装一系列的对象交互,使各对象不需要显示地相互调用

 



 

Mediator.java

package com.gary.designpattern.mediator;

/**
 * 中介者
 * @author gary
 *
 */
public interface Mediator {
	public void send(String message, Person person);
}

 

MediatorImpl.java

package com.gary.designpattern.mediator;

public class MediatorImpl implements Mediator {
	//中介者需要知道所有具体对象
	private PersonA personA;
	private PersonB personB;
	
	public void setPersonA(PersonA personA) {
		this.personA = personA;
	}
	
	public void setPersonB(PersonB personB) {
		this.personB = personB;
	}
	
	@Override
	public void send(String message, Person person) {
		if(person.equals(personA)){
			personA.greeting(message);
		}else{
			personB.greeting(message);
		}
	}


}

 

Person.java

package com.gary.designpattern.mediator;

public abstract class Person {
	protected Mediator mediator;

	public Person(Mediator mediator) {
		this.mediator = mediator;
	}
}

 

PersonA.java

package com.gary.designpattern.mediator;

public class PersonA extends Person {

	public PersonA(Mediator mediator) {
		super(mediator);
	}
	
	/**
	 * 通过中介者发送信息
	 * @param message
	 */
	public void send(String message){
		mediator.send(message, this);
	}
	
	public void greeting(String message){
		System.out.println("PersonA: " + message);
	}
}

 

PersonB.java

package com.gary.designpattern.mediator;

public class PersonB extends Person {

	public PersonB(Mediator mediator) {
		super(mediator);
	}
	
	/**
	 * 通过中介者发送信息
	 * @param message
	 */
	public void send(String message){
		mediator.send(message, this);
	}
	
	public void greeting(String message){
		System.out.println("PersonB: " + message);
	}
}

 

Test.java

package com.gary.designpattern.mediator;

/**
 * 测试
 * @author gary
 *
 */
public class Test {
	public static void main(String[] args) {
		MediatorImpl ci = new MediatorImpl();
		//让具体对象认识中介者
		PersonA personA = new PersonA(ci);
		PersonB personB = new PersonB(ci);
		//让中介者认识具体对象
		ci.setPersonA(personA);
		ci.setPersonB(personB);
		
		//通过中介者转发
		personA.send("Hello B!");
		personB.send("Hi A!");
	}
}

 

  • 大小: 80.6 KB
分享到:
评论

相关推荐

    C++ Mediator模式

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

    mediator模式

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

    Java设计模式之中介模式(Mediator模式)介绍

    **Java设计模式之中介模式(Mediator模式)介绍** 中介模式是一种行为设计模式,它旨在减少多个对象之间的直接通信,从而降低系统复杂性。在Java中,Mediator模式通过引入一个中介对象,使得原本直接相互依赖的对象...

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

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

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

    Mediator模式是一种行为型设计模式,它定义了一个对象来封装一系列对象交互的方式,从而使各个对象之间无需显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 #### 二、Mediator模式的核心...

    设计模式 Mediator 中介者 c++

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

    Mediator.zip

    在"NetCoreDemo"这个示例中,我们可能看到如何在.NET Core框架下应用Mediator模式。 Mediator模式的核心概念是通过一个中介对象协调各个对象的行为,避免它们之间直接通信。这样,当一个对象的状态变化时,不再需要...

    Mediator_C++_

    在Mediator模式下,这些参数可以通过中介者进行统一管理,用户可以通过更改中介者中的设置,而不是修改每个算法的代码,从而实现对多个算法的参数调整。 为了实现这样的功能,C++代码可能包含以下几个关键部分: 1...

    设计模式原理与应用之行为模式.pptx

    本文将对行为模式的原理和应用进行详细的介绍,包括职责链模式、命令模式、解释器模式、迭代器模式、mediator模式、备忘录模式、观察者模式、状态模式、策略模式、模板模式和访问者模式等。 Chain of ...

    JavaScript设计模式与开发实践.pdf

    singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、Decorator模式、...、Interpreter模式、Iterator模式、Mediator模式、Memento模式等...

    设计模式专题---设计模式示例代码(全)(python--c++)

    7. **Mediator模式**:Mediator模式是一种行为设计模式,定义了一个接口,用于在各对象之间进行通信,降低了对象之间的耦合性,使得对象之间的交互更加灵活。 8. **Memento模式**:Memento模式是用于保存对象状态的...

    C++ 设计模式

    Mediator模式是用来降低多个类之间的耦合度,将它们之间的交互集中在一个单独的中介类中进行管理。在C++中,我们可以创建一个抽象的中介者类,定义接口来处理各个同事类之间的通信。然后,为每个具体的同事类实现这...

    C++设计模式.pdf

    Mediator模式用一个中介对象来封装一系列的对象交互,使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 #### Command模式 Command模式将一个请求封装为一个对象,从而使你...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    - **Mediator模式**:用一个中介对象来封装一系列的对象交互。Mediator使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 - **Command模式**:将一个请求封装为一个对象,从而使...

    23种设计模式(C++).pdf

    - Mediator模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 - Command模式:将一个请求封装为一个对象,从而可用不同的...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    Mediator模式用一个中介对象来封装一系列的对象交互,使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 #### 3.7 Command模式 Command模式将请求封装为一个对象,从而使你...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    - **3.6 Mediator模式**:定义了一个中介者对象来简化各个组件之间的交互。 - **3.7 Command模式**:将请求封装为一个对象,从而使用户可以用不同的请求对客户端进行参数化。 - **3.8 Visitor模式**:表示一个作用于...

Global site tag (gtag.js) - Google Analytics