`
543089122
  • 浏览: 153157 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

简单_调停者模式(mediator)/中介者模式

阅读更多



调停者模式(mediator)/中介者模式:
以唐僧作为调停者,孙悟空、八戒、沙僧他们互相进行问候.为例子。
假设他们3个互相打招呼不用这个设计模式而是直接打招呼,那么以后有改动的话将会很无奈,用了该模式后会发现以后即便需要改动了也不需要改动什么,顶多就是改动下调停者的逻辑实现。

package design.mediator2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午05:21:45 <br>
 * 
 */
public class Test {
	public static void main(String[] args) {
		/*
		 * 调停者模式(mediator)/中介者模式
		 * 唐僧作为调停者,孙悟空、八戒、沙僧他们互相进行问候.
		 * 如果不用调停者模式将会非常的混乱。
		 * 调停者模式实质上是调停者类拥有被调停者类的引用,
		 * TangShengMediator唐僧作为调停者必须要拥有 孙悟空、八戒、沙僧 他们的引用,
		 * 要不怎么进行调停呢。
		 */
		//创建调停者
		TangShengMediator m = new TangShengMediator();
		//创建被调停者
		SunWuKong swk = new SunWuKong(m);
		BaJie bj = new BaJie(m);
		ShaSheng ss = new ShaSheng(m);
		
		//互相进行问候
		swk.sayHello(bj);
		swk.sayHello(ss);
		ss.sayHello(swk);
		ss.sayHello(bj);
		bj.sayHello(swk);
		bj.sayHello(ss);
	}
}

package design.mediator2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午05:22:47 <br>
 * 唐僧作为调停者
 */
public class TangShengMediator {
	private SunWuKong swk;
	private BaJie bj;
	private ShaSheng ss;

	public SunWuKong getSwk() {
		return swk;
	}

	public void setSwk(SunWuKong swk) {
		this.swk = swk;
	}

	public BaJie getBj() {
		return bj;
	}

	public void setBj(BaJie bj) {
		this.bj = bj;
	}

	public ShaSheng getSs() {
		return ss;
	}

	public void setSs(ShaSheng ss) {
		this.ss = ss;
	}

	public void sayHello(Person p) {
		if (p instanceof SunWuKong) {
			System.out.println("孙悟空在。。。");
		} else if (p instanceof BaJie) {
			System.out.println("八戒在。。");
		} else if (p instanceof ShaSheng) {
			System.out.println("沙僧在。。");
		}
	}
}

package design.mediator2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午05:22:07 <br>
 * 被调停的抽象类
 */
public abstract class Person {
	//持有调停者的引用
	protected TangShengMediator m;

	public Person(TangShengMediator m) {
		this.m = m;
	}

	//孙悟空、八戒、沙僧 相互间进行打招呼,这里其子类需要实现该方法,这看起来又有模板方法模式的影子
	public abstract void sayHello(Person p);
}

package design.mediator2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午05:24:03 <br>
 * 被调停者---孙悟空
 */
public class SunWuKong extends Person {

	public SunWuKong(TangShengMediator m) {
		super(m);
	}

	@Override
	public void sayHello(Person p) {
		m.setSwk(this);
		m.sayHello(p);
	}

}

package design.mediator2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午05:25:10 <br>
 * 被调停者---八戒
 */
public class BaJie extends Person {

	public BaJie(TangShengMediator m) {
		super(m);
	}

	@Override
	public void sayHello(Person p) {
		m.setBj(this);
		m.sayHello(p);
	}

}

package design.mediator2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午05:25:34 <br>
 * 被调停者---沙僧
 */
public class ShaSheng extends Person {

	public ShaSheng(TangShengMediator m) {
		super(m);
	}

	@Override
	public void sayHello(Person p) {
		m.setSs(this);
		m.sayHello(p);
	}

}
  • 大小: 86.6 KB
0
0
分享到:
评论

相关推荐

    调停者模式

    调停者模式涉及的角色包括抽象调停者(Mediator)、具体调停者(Concrete Mediator)、抽象同事类(Colleague)和具体同事对象(Concrete Colleague)。抽象调停者定义了同事对象与调停者之间的接口;具体调停者实现...

    JAVA设计模式之调停者模式详解

    在Java中,调停者模式通过引入一个中介对象,也就是调停者,来协调多个对象之间的交互,避免对象之间直接引用,从而形成松散耦合的关系。 在实际场景中,例如电脑硬件系统,主板就是一个典型的调停者,它连接着CPU...

    C#设计模式之Mediator中介者模式解决程序员的七夕缘分问题示例

    Mediator模式也被称为调停者模式,它能够将对象之间的耦合度降低,从而提高系统的灵活性和可维护性。 在本文中,我们将使用C#语言来实现Mediator模式,以解决程序员的七夕缘分问题。该示例中,我们将创建三个主要类...

    c++设计模式-行为型模式-中介者模式

    c++设计模式-行为型模式-中介者模式;qt工程;c++简单源码; 中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的...中介者模式又叫调停模式,它是迪米特法则的典型应用。

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

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

    C++面向对象23种设计模式实现源码DesignPattern.zip

    18.调停者模式Mediator展示了如何通过一个仲裁者类来处理对象间的交互,避免对象之间直接相互依赖。 5. **观察者模式(Observer Pattern)**:观察者模式是一种发布-订阅模式,当一个对象的状态发生改变时,所有...

    Java中23种设计模式详解

    14. 调停者模式(Mediator) 调停者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的内部表示。这种模式使得对象交互可以灵活地变化。 15. 备忘录模式(Memento) 备忘录模式在不破坏封装...

    Java课堂:Java开发下的设计模式简单说明

    14. 调停者模式(Mediator):调停者模式通过一个中介对象协调多个对象之间的交互,降低对象间的耦合度。 15. 备忘录模式(Memento):备忘录模式用于在不破坏封装的前提下,保存对象的状态,以便在需要时恢复。 ...

    C#23种设计模式_示例源代码及PDF

    调停者模式: 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显 调停者模式 作用。 从而使他们可以松散偶合。 当某些对象之间的作用发生改变时, 不会立即影响其他 的 一些对象之间的作用。 ...

    设计模式简介

    调停者模式定义一个中介对象来封装一系列对象之间的交互,使这些对象不需要显示地相互引用;备忘录模式捕获和外部化一个对象的内部状态,以便它可以被保存和恢复;迭代器模式提供一种方法顺序访问一个聚合对象中的...

    JAVA 23种设计模式

    14. 调停者模式(Mediator):通过中介对象协调多个对象之间的交互,降低对象间的耦合度。 15. 备忘录模式(Memento):在不破坏封装的前提下,保存对象的状态,以便后续恢复。 16. 观察者模式(Observer):定义...

    java的23种设计模式

    14. **调停者模式**(Mediator) - **模式名称**:调停者模式 - **问题**:多个对象之间的交互过于复杂。 - **解决方案**:引入一个中介对象来协调这些对象之间的交互。 - **效果**:降低了对象之间的耦合度,...

    设计模式总结笔记设计模式总结笔记

    调停者模式(Mediator)** - **定义**:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 - **用途**:用于协调多个对象的行为...

    UML类图的简介

    4. **调停者模式(Mediator)**:通过一个中介对象协调各个对象的交互,降低对象间的耦合度。调停者使得对象间的关系不再是一对一或多对多,而是转化为一对多,使得对象的交互更加灵活,易于维护和扩展。 5. **备忘...

    设计模式1

    5. 调停者模式(Mediator):将多个对象之间的交互集中到一个中介对象,简化对象间的关系。 6. 侨界模式(Bridge):分离抽象接口和其实现,允许两者独立变化,实现多种组合。 7. 外观模式(Facade):为子系统...

Global site tag (gtag.js) - Google Analytics