java设计模式之中介者模式

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

特点:

     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<String, Department> map = new HashMap<String, Department>();
	
	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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值