轻松掌握java中介者模式
定义:用来降低多个对象和类之间的通信复杂性。中介者模式属于行为型模式。
特点:
1、降低了类的复杂度,将一对多转化成了一对一。
2、各个类之间的解耦。
3、符合迪米特原则。
企业级开发和常用框架中的应用:mvc模式中的c
具体实例:
publicclassDemo{
publicstaticvoidmain(String[]args){
Mediatorm=newMediator();
Departmentd1=newDepartment(m,"开发部");
Departmentd2=newDepartment(m,"财务部");
Departmentd3=newDepartment(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");
}
}
classDepartment{
privateStringname;
privateMediatormediator;
publicDepartment(Mediatormediator,Stringname){
this.name=name;
this.mediator=mediator;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicvoidapply(Stringthing,Stringcoordinate){
System.out.println("我们是"+this.getName()+","+thing+",需要帮助");
mediator.dispatch(this,thing,coordinate);
}
publicvoidhandle(Stringname,Stringthing){
System.out.println("我们是"+this.getName()+","+name+"需要我们的帮助,我们马上处理他们的事情");
System.out.println("*******************************************");
}
}
/**
*中介者对象,持有所有同事对象,负责调度各部门协调工作
*/
classMediator{
privateStringname;
privateMap<String,Department>map=newHashMap<String,Department>();
publicvoidadd(Departmentd,Stringname){
this.map.put(name,d);
}
publicvoiddispatch(Departmentdpt,Stringthing,Stringcoordinate){
Departmentd=map.get(coordinate);
d.handle(dpt.getName(),thing);
}
}
中介者模式和代理模式的区别:初一听这两个模式的模式感觉这两个模式好像是一个模式,但是这两个模式却完全不同,代理模式主要用于隐藏实际对象,不让别人知道具体的操作细节,而中介者模式则主要用户多对象多对多的复杂交互,为了简化这些交互,才有了终结者模式。
