轻松掌握java中介者模式
程序员文章站
2024-03-12 16:55:32
定义:用来降低多个对象和类之间的通信复杂性。中介者模式属于行为型模式。
特点:
1、降低了类的复杂度,将一对多转化成了...
定义:用来降低多个对象和类之间的通信复杂性。中介者模式属于行为型模式。
特点:
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); } }
中介者模式和代理模式的区别:初一听这两个模式的模式感觉这两个模式好像是一个模式,但是这两个模式却完全不同,代理模式主要用于隐藏实际对象,不让别人知道具体的操作细节,而中介者模式则主要用户多对象多对多的复杂交互,为了简化这些交互,才有了终结者模式。