来源:http://www.bjsxt.com/ 
一、【GOF23设计模式】_中介者模式、同事协作类、内部类实现

 package com.test.mediator;
/**
* 同事类的接口
*/
public interface Department {
void selfAction();//做本部门的事情
void outAction();//向总经理发出申请
}
 package com.test.mediator;

 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(getClass().getName()+"专心科研,开发项目!");
} @Override
public void outAction() {
System.out.println(getClass().getName()+"汇报工作!没钱了,需要资金支持!");
}
}
 package com.test.mediator;

 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(getClass().getName()+"数钱!");
} @Override
public void outAction() {
System.out.println(getClass().getName()+"汇报工作!没钱了,钱太多了!怎么花?");
}
}
 package com.test.mediator;

 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(getClass().getName()+"跑去接项目!");
} @Override
public void outAction() {
System.out.println(getClass().getName()+"汇报工作!项目承接的进度,需要资金支持!"); m.command("finacial");
}
}
 package com.test.mediator;

 public interface Mediator {
void register(String dname,Department d);
void command(String dname);
}
 package com.test.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 d) {
map.put(dname, d);
} @Override
public void command(String dname) {
map.get(dname).selfAction();
}
}
 package com.test.mediator;

 public class Client {
public static void main(String[] args) {
Mediator m = new President(); Market market = new Market(m);
Development devp = new Development(m);
Finacial f = new Finacial(m); market.selfAction();
market.outAction();
}
}
控制台输出:
com.test.mediator.Market跑去接项目!
com.test.mediator.Market汇报工作!项目承接的进度,需要资金支持!
com.test.mediator.Finacial数钱!

【GOF23设计模式】中介者模式的更多相关文章

  1. 【GOF23设计模式】建造者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]建造者模式详解类图关系 建造飞船 package com.test.Builder; public class AirShi ...

  2. 7. 星际争霸之php设计模式--中介者模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  3. GOF23设计模式之代理模式

    GOF23设计模式之代理模式 核心作用:通过代理,控制对对象的访问.可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理(即:AOP的微观实现) AOP(Asp ...

  4. GOF23设计模式之原型模式

    GOF23设计模式之原型模式 1)通过 new 产生一个对象需要飞船繁琐的数据准备或访问权限,则可以使用原型模式. 2)就算 java 中的克隆技术,以某个对象为原型,复制出新的对象.显然,新的对象具 ...

  5. GOF23设计模式之建造者模式

    GOF23设计模式之建造者模式 场景: 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样的一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所 ...

  6. 【GOF23设计模式】工厂模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_简单工厂模式详解.面向对象设计原则.开闭原则.依赖反转原则.迪米特法则  没有工厂模式的情况 package com.te ...

  7. JAVA 设计模式 中介者模式

    用途 中介者模式 (Mediator) 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式是一种行为型模式. 结 ...

  8. 【GOF23设计模式】备忘录模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_备忘录模式.多点备忘.事务操作.回滚数据底层架构 package com.test.memento; /** * 源发器类 ...

  9. 深入浅出设计模式——中介者模式(Mediator Pattern)

    模式动机 在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题: 系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他 ...

  10. 设计模式--中介(Mediator)模式

    时隔很长一段时,现在又重温设计模式,上个星期学习<设计模式--代理(Proxy)模式>http://www.cnblogs.com/insus/p/4128814.html. 温故而知新, ...

随机推荐

  1. 部署tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  -f  catalina.out 来跟踪Tomcat 和相关应用运行的情况. ...

  2. Flash Media Server 4.5 序列号 (fms4.5 激活码)

    激活码一枚   ,网上找不到的..我今天放出来了哦... 1462-5864-7783-6034-8316-3718    (亲测 可用) 安装前找到系统盘下windows/system32/driv ...

  3. IIS7 php wordpress 中文url 标签tag中文URL404解决方法

    新建重写规则: <rule name="ChineseURL" stopProcessing="true"> <match url=" ...

  4. MyBatis知多少(22)MyBatis删除操作

    本节从表中使用MyBatis删除记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, f ...

  5. joomla3.1安装不通过Magic Quotes GPC解决方法

    测试安装下joomla 3.1稳定版,但是不能成功,Magic Quotes GPC始终显示 否红色,这样就安装不了了! 要解决这个很简单,开启Magic Quotes GPC就行了,于是找到php. ...

  6. WWDC2015 结束.新一波更新以及bug即将来袭.

    WWDC结束.新一波更新以及bug即将来袭. HTTPS 将成为标准链接. http被报错. GamePlayKit 这是搞那样. 还有ReplayKit  那些什么录像分享什么的还有活路么? Mod ...

  7. STL中stack小结

    (1)为了运用stack,你必须包含头文件<stack>:#include<stack> (2)在头文件中stack定义如下: namespace std{ template ...

  8. DDD:《实现领域驱动》拾贝(待续)

    Design is not just what it looks like and feels like. Design is how it works.

  9. Mongodb For Windows

    关于 mongodb管理与安全认证 请移步这里: Mongodb For Mac OSX && 登录验证 安装mongodb 1. 官网下载 mongodb,如果嫌慢还可以前往百度云盘 ...

  10. 《精通Linux内核必会的75个绝技》知识杂记

    http://www.ibm.com/developerworks/cn/linux/l-cn-utrace/ utrace是为运行态的进程提供trace和debug支持. utrace能做如下事情: ...