文档章节

GOF23之中介者模式

captainliu
 captainliu
发布于 2017/05/18 12:38
字数 342
阅读 9
收藏 0

 

package com.gof.mediator;

public interface Mediator {
	
	void  register(String dname ,Department t);
	void  momand(String dname );
}
package com.gof.mediator;

import java.util.HashMap;
import java.util.Map;

public class President implements Mediator{

	private Map<String	, Department> map = new HashMap<String, Department>();

	@Override
	public void register(String dname, Department t) {
		map.put(dname, t);
	}

	@Override
	public void momand(String dname) {
		map.get(dname).selfAction();
	}
	
}
package com.gof.mediator;

/**
 * 同事类接口
 * @author root
 *
 */
public interface Department {
	void  selfAction();//做本部门的事情
	void  outAction();//向外部发出请求
}
package com.gof.mediator;

/**
 * 研发部门
 * @author root
 *
 */
public class Development implements Department{

	private  Mediator m;  // 持有中介者的引用
	
	public Development(Mediator m) {
		super();
		this.m = m;
		m.register("development", this);
	}

	@Override
	public void selfAction() {
		System.out.println("专心科研,研发项目");
	}

	@Override
	public void outAction() {
		System.out.println("汇报工作,没资金了,需要资金支持!");
	}

}
package com.gof.mediator;

/**
 * 财务部门
 * @author root
 *
 */
public class Finacial implements Department{

	private  Mediator m;  // 持有中介者的引用
	
	public Finacial(Mediator m) {
		super();
		this.m = m;
		m.register("finacial", this);
	}

	@Override
	public void selfAction() {
		System.out.println("数钱!");
	}

	@Override
	public void outAction() {
		System.out.println("汇报工作,没钱了,钱太多。");
	}

}
package com.gof.mediator;

/**
 * 市场部门
 * @author root
 *
 */
public class Market implements Department{

	private  Mediator m;  // 持有中介者的引用
	
	public Market(Mediator m) {
		super();
		this.m = m;
		m.register("market", this);
	}

	@Override
	public void selfAction() {
		System.out.println("汇报工作,承接项目的进度,需要资金支持。");
		
	}

	@Override
	public void outAction() {
		System.out.println("跑项目!");
		m.momand("finacial");
	}

}
package com.gof.mediator;

public class Client {
	public static void main(String[] args) {
		Mediator mediator = new President();
		Market market = new Market(mediator);
		Finacial finacial = new Finacial(mediator);
		Development development = new Development(mediator);
		market.selfAction();
		market.outAction();
	}
}

控制台:

汇报工作,承接项目的进度,需要资金支持。
跑项目!
数钱!

© 著作权归作者所有

上一篇: GOF23之命令模式
captainliu
粉丝 11
博文 106
码字总数 83678
作品 0
昌平
程序员
私信 提问
设计模式的学习(13)中介者模式

中介者模式 中介者模式(Mediator Pattern)又称为调停者模式,是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,中介者通常处理不同对象之间的通信,使各对象不需要显式...

杨健-YJ
2018/12/29
0
0
我的Java设计模式-中介者模式

*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 小时候钟爱战争片,《地道战》、《鸡毛信》、《铁道游击队》一系列的老电影,咦~想起都激动得起鸡皮疙瘩。不过觉得特别逗的是,电影...

Jet啟思
2018/01/17
0
0
《JavaScript设计模式与开发实践》模式篇(11)—— 中介者模式

中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的 相关对象都通过中介者对象来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知 中介者对象即...

嗨呀豆豆呢
2018/12/23
0
0
Java设计模式之-中介者模式(Mediator)

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

Mock2052
2017/11/28
0
0
设计模式之中介者模式(行为型)

[TOC] 一、模式定义 中介者模式(Mediator Pattern):中介者模式就是用一个中介对象来封装一系列的对象的交互,使各对象之间不需要显式地相互作用,降低对象之间的耦合度,中介者是一种对象行...

smileNicky
04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

以太坊私有链搭建

https://blog.csdn.net/Blockchain_lemon/article/details/80589123

Moks角木
40分钟前
1
0
自律给我自信-为什么要自律

为什么要自律 混一天和努力一天 看不到任何差别 3天看不到任何变化 7天也看不到任何效果 但是 1个月后, 会看到话题不同 3个月后, 会看到气场不同 6个月后, 会看到距离不同 3年后, 会看到...

周大壮
40分钟前
1
0
读书replay计划说明

突然脑袋一闪,我有了这样一个主意:通过写博客的方式,将我阅读的书中的内容replay出来。 我一般会找着我感兴趣的书去读,一般也会读书中我感兴趣的章节,或者当下对我有用的章节,所以这个...

wanxiangming
42分钟前
0
0
CentOS7安装xrdp环境可实现远程桌面访问

CentOS7安装xrdp环境可实现远程桌面访问 2018-07-14 06:39:28 分类:运维 阅读(2051) 评论(0) 在"Ubuntu系统安装xrdp桌面客户端及实现远程连接桌面"文章中有分享过在Ubuntu系统中安装XRDP环境...

linjin200
今天
5
0
ConfigurationProperties

package cn.enjoy.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @ConfigurationProperties(pr......

少年已不再年少
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部