文档章节

行为型模式之十:中介者模式

奋斗到天明
 奋斗到天明
发布于 2015/08/27 17:43
字数 263
阅读 13
收藏 0

中介者模式是用来协调一组同事,这些同事可能互相不直接交流,而是中介者。 在下面的例子中,Colleague A 想聊天,Colleague B 想打架。当他们做一些动作,他们唤醒中介者去做。

中介者类图

中介者Java代码

package designpatterns.mediator;
 
interface IMediator {
  public void fight();
  public void talk();
  public void registerA(ColleagueA a);
  public void registerB(ColleagueB a);
}
 
//concrete mediator
class ConcreteMediator implements IMediator{
 
  ColleagueA talk;
  ColleagueB fight;
 
  public void registerA(ColleagueA a){
    talk = a;
  }
 
  public void registerB(ColleagueB b){
    fight = b;
  }
 
  public void fight(){
    System.out.println("Mediator is fighting");
    //let the fight colleague do some stuff
  }
 
  public void talk(){
    System.out.println("Mediator is talking");
    //let the talk colleague do some stuff
  }
}
 
abstract class Colleague {
  IMediator mediator;
  public abstract void doSomething();
}
 
//concrete colleague
class ColleagueA extends Colleague {
 
  public ColleagueA(IMediator mediator) {
    this.mediator = mediator;
  }
 
  @Override
  public void doSomething() {
    this.mediator.talk();
    this.mediator.registerA(this);
  }
}
 
//concrete colleague
class ColleagueB extends Colleague {
  public ColleagueB(IMediator mediator) {
    this.mediator = mediator;
    this.mediator.registerB(this);
  }
 
  @Override
  public void doSomething() {
    this.mediator.fight();
  }
}
 
public class MediatorTest {
  public static void main(String[] args) {
    IMediator mediator = new ConcreteMediator();
 
    ColleagueA talkColleague = new ColleagueA(mediator);
    ColleagueB fightColleague = new ColleagueB(mediator);
 
    talkColleague.doSomething();
    fightColleague.doSomething();
  }
}

在行为模式中,观察者模式最像中介者,你可以在观察者模式中比较两者。

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
小菜学设计模式——设计模式总结之行为型(2)

1、设计模式总结 设计模式总共23个,但是常用的不到10个,下面就把这23个设计模式进行整理归类,具体如下: 1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型...

learn_more
2015/07/10
137
0
一句话总结23种设计模式则

1. 前言 断断续续写了一段时间的设计模式,终于把经典的23种设计模式全写完了。下面对这些设计模式总结一下。 2. 设计原则 设计原则的介绍 : 设计模式的六大原则 即使我们之前没有专门看过这...

四月葡萄
01/05
0
0
设计模式之11个行为型模式

行为型模式概述 行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。 行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。 通过行为型模式,可...

randy_shandong
2017/01/12
0
0
Java设计模式之-中介者模式(Mediator)

中介者模式,又叫调停者模式。我看的书里面是叫做调停者的,我个人认为没有“中介者”这个名字容易理解。 中介者模式:在一个庞大系统中,多个类之间需要进行信息的交换,从而引发后续的行为...

Mock2052
2017/11/28
0
0
行为型模式:Mediator 中介者模式

行为型模式:Mediator 中介者模式 1、依赖关系的转化 1)多个对象之间的相互依赖是非常复杂的,这些对像都是两两直接依赖,而用实现细节依赖于抽象的做法对于这种情况已经不够用了,因为这...

flyhighly
2011/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解析高可用分布式键值存储 etcd 的原理

这篇文章将会介绍 etcd 的实现原理,其中包括 Raft 协议、存储两大模块,在最后我们也会简单介绍 etcd 一些具体应用场景。 etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整...

小刀爱编程
17分钟前
1
0
在ubuntun虚拟机里安装goLang语言编程环境

Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 北京时间201...

JerryWang_SAP
18分钟前
5
0
c++builder导出函数export function DLL

__stdcall __export 即可,如: ulong __stdcall __export od_disasm(char *src,ulong srcsize,ulong srcip, t_disasm *disasm,int disasmmode){ return Disasm(src,srcsiz......

simpower
20分钟前
2
0
KDC服务安装及配置

阿伦哥-
23分钟前
1
0
mybatis-plus公共字段操作以及springboot2整合mybatis-plus

1、公共实体 对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性 所有新增公共字段加注解 并指定 @TableField(value = "corp_code",fi...

glen_xu
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部