调停者模式(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
分享到:
相关推荐
调停者模式涉及的角色包括抽象调停者(Mediator)、具体调停者(Concrete Mediator)、抽象同事类(Colleague)和具体同事对象(Concrete Colleague)。抽象调停者定义了同事对象与调停者之间的接口;具体调停者实现...
在Java中,调停者模式通过引入一个中介对象,也就是调停者,来协调多个对象之间的交互,避免对象之间直接引用,从而形成松散耦合的关系。 在实际场景中,例如电脑硬件系统,主板就是一个典型的调停者,它连接着CPU...
Mediator模式也被称为调停者模式,它能够将对象之间的耦合度降低,从而提高系统的灵活性和可维护性。 在本文中,我们将使用C#语言来实现Mediator模式,以解决程序员的七夕缘分问题。该示例中,我们将创建三个主要类...
c++设计模式-行为型模式-中介者模式;qt工程;c++简单源码; 中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的...中介者模式又叫调停模式,它是迪米特法则的典型应用。
咱们先来看下中介者模式(Mediator Pattern)的定义,它就是,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,这种模式又称为调停...
18.调停者模式Mediator展示了如何通过一个仲裁者类来处理对象间的交互,避免对象之间直接相互依赖。 5. **观察者模式(Observer Pattern)**:观察者模式是一种发布-订阅模式,当一个对象的状态发生改变时,所有...
14. 调停者模式(Mediator) 调停者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的内部表示。这种模式使得对象交互可以灵活地变化。 15. 备忘录模式(Memento) 备忘录模式在不破坏封装...
14. 调停者模式(Mediator):调停者模式通过一个中介对象协调多个对象之间的交互,降低对象间的耦合度。 15. 备忘录模式(Memento):备忘录模式用于在不破坏封装的前提下,保存对象的状态,以便在需要时恢复。 ...
调停者模式: 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显 调停者模式 作用。 从而使他们可以松散偶合。 当某些对象之间的作用发生改变时, 不会立即影响其他 的 一些对象之间的作用。 ...
调停者模式定义一个中介对象来封装一系列对象之间的交互,使这些对象不需要显示地相互引用;备忘录模式捕获和外部化一个对象的内部状态,以便它可以被保存和恢复;迭代器模式提供一种方法顺序访问一个聚合对象中的...
14. 调停者模式(Mediator):通过中介对象协调多个对象之间的交互,降低对象间的耦合度。 15. 备忘录模式(Memento):在不破坏封装的前提下,保存对象的状态,以便后续恢复。 16. 观察者模式(Observer):定义...
14. **调停者模式**(Mediator) - **模式名称**:调停者模式 - **问题**:多个对象之间的交互过于复杂。 - **解决方案**:引入一个中介对象来协调这些对象之间的交互。 - **效果**:降低了对象之间的耦合度,...
调停者模式(Mediator)** - **定义**:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 - **用途**:用于协调多个对象的行为...
4. **调停者模式(Mediator)**:通过一个中介对象协调各个对象的交互,降低对象间的耦合度。调停者使得对象间的关系不再是一对一或多对多,而是转化为一对多,使得对象的交互更加灵活,易于维护和扩展。 5. **备忘...
5. 调停者模式(Mediator):将多个对象之间的交互集中到一个中介对象,简化对象间的关系。 6. 侨界模式(Bridge):分离抽象接口和其实现,允许两者独立变化,实现多种组合。 7. 外观模式(Facade):为子系统...