博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java设计模式之中介者模式
阅读量:5919 次
发布时间:2019-06-19

本文共 1653 字,大约阅读时间需要 5 分钟。

  hot3.png

定义:用来降低多个对象和类之间的通信复杂性。中介者模式属于行为型模式。

特点:

     1、降低了类的复杂度,将一对多转化成了一对一。

    2、各个类之间的解耦。

    3、符合迪米特原则。

企业级开发和常用框架中的应用:mvc模式中的c

具体实例:

public class Demo {	public static void main(String[] args) {		Mediator m = new Mediator();		Department d1 = new Department(m, "开发部");		Department d2 = new Department(m, "财务部");		Department d3 = new Department(m, "策划部");		m.add(d1, "dep");		m.add(d2, "fin");		m.add(d3, "c");		d2.apply("手里有一个项目需要开发", "dep");		d1.apply("开发项目需要资金", "fin");		d1.apply("项目开发完了,需要策划发布", "c");		d3.apply("发布会需要资金", "fin");	}}class Department{		private String name;	private Mediator mediator;		public Department(Mediator mediator,String name) {		this.name = name;		this.mediator = mediator;	}		public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}		public void apply(String thing,String coordinate){		System.out.println("我们是"+this.getName()+","+thing+",需要帮助");		mediator.dispatch(this, thing, coordinate);	}		public void handle(String name,String thing){		System.out.println("我们是"+this.getName()+","+name+"需要我们的帮助,我们马上处理他们的事情");		System.out.println("*******************************************");	}}/** *中介者对象,持有所有同事对象,负责调度各部门协调工作  */class Mediator{	private String name;		private Map
map = new HashMap
(); public void add(Department d,String name){ this.map.put(name, d); } public void dispatch(Department dpt,String thing,String coordinate){ Department d = map.get(coordinate); d.handle(dpt.getName(),thing); }}

中介者模式和代理模式的区别:初一听这两个模式的模式感觉这两个模式好像是一个模式,但是这两个模式却完全不同,代理模式主要用于隐藏实际对象,不让别人知道具体的操作细节,而中介者模式则主要用户多对象多对多的复杂交互,为了简化这些交互,才有了终结者模式。

转载于:https://my.oschina.net/jiaoy/blog/748230

你可能感兴趣的文章
MVC中code first方式开发,数据库的生成与更新
查看>>
不惧面试:HTTP协议(1) - 基础扫盲
查看>>
MDI中的ToolStrip合并
查看>>
easyui tree 搜索
查看>>
Socket Network Programming
查看>>
无穷和式问题
查看>>
2018 省选 D1T2 IIIDX
查看>>
grub 引导修复
查看>>
Android 代理服务器为全网提供代理
查看>>
asp.net.core网站重启后登陆无效问题(部署在IIS)
查看>>
java 并发编程——Thread 源码重新学习
查看>>
机器学习基础——模型参数评估与选择
查看>>
linux保存住github的账号和密码
查看>>
珍惜身边的人,珍惜当下
查看>>
windows server 2008r2 在vmware里自动关机
查看>>
phpcms——源代码阅读2
查看>>
对象的深浅拷贝
查看>>
关于shutdown和close
查看>>
软件工程-系统开发方法论
查看>>
Clone table header and set as the first element, and replace header's th with td
查看>>