文档章节

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

奋斗到天明
 奋斗到天明
发布于 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【七】组合Action

本章描述了常用定义Action的方法。 自定义action builders 我们在action一章已经看过如何声明一个action——有request parameter、无request parameter、有body parser等等。你可以在 asynch...

Landas
38分钟前
0
0
Spring Boot实战之基础回顾

本文作者: 吴伟祥 本文链接: https://wuweixiang.cn/2018/08/21/Spring-Boot实战之基础回顾/ 版权声明: 本博客所有文章除特别声明外均为原创,采用CC BY-NC-SA 4.0 许可协议。转载请在文章开...

吴伟祥
38分钟前
0
0
OAuth认证开发

提示: 以下测试是基于项目安装成功,初始化数据库(initial_db.ddl, oauth.ddl, initial_data.ddl)后的测试, 也可在页面上点击"client_details"菜单里进行测试 方式1:基于浏览器 (grant_type=...

舒文joven
47分钟前
1
0
第二章-对象及变量的并发访问-第二篇

锁对象的改变 请阅读如下代码 public class MainClass { private String lock = "123"; public void printStringB() { try { synchronized (lock) { ......

简心
51分钟前
0
0
日志中记录代理IP以及真实客户端、apache只记录指定URI的日志

apache 日志中记录代理IP以及真实客户端 默认情况下log日志格式为: LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined 其中%h 是记录访问者的IP,如果在web的前...

李超小牛子
59分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部