文档章节

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

奋斗到天明
 奋斗到天明
发布于 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
昌平
程序员
私信 提问
Java进阶篇设计模式之十 ---- 访问者模式和中介者模式

前言 在上一篇中我们学习了结构型模式的解释器模式(Interpreter Pattern)和迭代器模式(Iterator Pattern)。本篇则来学习下行为型模式的两个模式,访问者模式(Visitor Pattern)和中介者模式...

Ala6
11/05
0
0
小菜学设计模式——设计模式总结之行为型(2)

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

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

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

四月葡萄
01/05
0
0
行为型模式:Mediator 中介者模式

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

flyhighly
2011/04/24
0
0
设计模式之11个行为型模式

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

randy_shandong
2017/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

slot分发内容

slot元素作为组件模板之中的内容分发插槽。这个元素自身将被替换。 有 name 特性的 slot 称为具名 slot。 有 slot 特性的内容将分发到名字相匹配的具名 slot。 内容分发就是指混合父组件的内...

Carbenson
9分钟前
1
0
python开发入门

1.执行python文件 # python ./demo.py 2.Python ImportError: No module named 'requests'异常 解决方法: # pip install requests;...

硅谷课堂
10分钟前
1
0
官宣,PyTorch 1.0 稳定版本现已推出

简评:快来一起快乐地学习吧。 随着 PyTorch 生态系统和社区继续为开发人员提供有趣的新项目和教育资源,今天(12 月 7日)在 NeurIPS 会议上发布了 PyTorch 1.0 稳定版。研究人员和工程师现...

极光推送
23分钟前
1
0
对比理解adr,ldr指令

很多人在写简单的裸机代码或分析uboot时,常常遇到adr ldr指令。却分不清这2者的区别,今天就来谈谈adr与ldr指令。 参照韦老师的代码和Makefile写了test_adr.S: .text .globl _start _start...

天王盖地虎626
34分钟前
2
0
将spring boot 项目注册为Linux的服务

springboot 注册为Linux系统服务 springboot 注册为Linux系统服务

miaojiangmin
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部