用一个中介对象来封装一系列的对象交互,使各对象不需要显示地相互调用
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模式详解** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图,它提供了一种在不违反面向对象原则的前提下,提高代码可复用性和可维护性的方法。Mediator模式是其中的一种行为模式...
**中介者模式(Mediator Pattern)** 中介者模式是一种行为设计模式,它的主要目标是减少对象之间的耦合性,通过引入一个中介对象来协调多个对象之间的交互。在传统的多对象交互场景中,对象之间可能存在复杂的依赖...
**Java设计模式之中介模式(Mediator模式)介绍** 中介模式是一种行为设计模式,它旨在减少多个对象之间的直接通信,从而降低系统复杂性。在Java中,Mediator模式通过引入一个中介对象,使得原本直接相互依赖的对象...
**中介者模式(Mediator)详解** 在软件工程中,设计模式是一种被广泛采用的解决常见问题的经验总结,其中中介者模式是结构型设计模式的一种。它的主要目标是降低对象之间的耦合度,使得对象之间的关系更加清晰,...
Mediator模式是一种行为型设计模式,它定义了一个对象来封装一系列对象交互的方式,从而使各个对象之间无需显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 #### 二、Mediator模式的核心...
中介者模式的完整代码。 程序默认使用vs开发。其他开发工具可能需要做少许调整。
在"NetCoreDemo"这个示例中,我们可能看到如何在.NET Core框架下应用Mediator模式。 Mediator模式的核心概念是通过一个中介对象协调各个对象的行为,避免它们之间直接通信。这样,当一个对象的状态变化时,不再需要...
在Mediator模式下,这些参数可以通过中介者进行统一管理,用户可以通过更改中介者中的设置,而不是修改每个算法的代码,从而实现对多个算法的参数调整。 为了实现这样的功能,C++代码可能包含以下几个关键部分: 1...
本文将对行为模式的原理和应用进行详细的介绍,包括职责链模式、命令模式、解释器模式、迭代器模式、mediator模式、备忘录模式、观察者模式、状态模式、策略模式、模板模式和访问者模式等。 Chain of ...
singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、Decorator模式、...、Interpreter模式、Iterator模式、Mediator模式、Memento模式等...
Mediator模式用一个中介对象来封装一系列的对象交互,使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 #### Command模式 Command模式将一个请求封装为一个对象,从而使你...
7. **Mediator模式**:Mediator模式是一种行为设计模式,定义了一个接口,用于在各对象之间进行通信,降低了对象之间的耦合性,使得对象之间的交互更加灵活。 8. **Memento模式**:Memento模式是用于保存对象状态的...
Mediator模式是用来降低多个类之间的耦合度,将它们之间的交互集中在一个单独的中介类中进行管理。在C++中,我们可以创建一个抽象的中介者类,定义接口来处理各个同事类之间的通信。然后,为每个具体的同事类实现这...
- **Mediator模式**:用一个中介对象来封装一系列的对象交互。Mediator使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 - **Command模式**:将一个请求封装为一个对象,从而使...
- Mediator模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 - Command模式:将一个请求封装为一个对象,从而可用不同的...
Mediator模式用一个中介对象来封装一系列的对象交互,Mediator模式可减少对象之间的相互依赖。 - **适用场景**:一组对象以定义良好但是复杂的方式进行通信;这些交互松散耦合以至于可能改用新的交互;当同事类...
Mediator模式用一个中介对象来封装一系列的对象交互,使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 #### 3.7 Command模式 Command模式将请求封装为一个对象,从而使你...