轻松掌握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); } }
中介者模式和代理模式的区别:初一听这两个模式的模式感觉这两个模式好像是一个模式,但是这两个模式却完全不同,代理模式主要用于隐藏实际对象,不让别人知道具体的操作细节,而中介者模式则主要用户多对象多对多的复杂交互,为了简化这些交互,才有了终结者模式。
相关文章
idea maven项目启动项目不编译target 文件的问题及解决方法
代码编辑器中无编译错误,通过maven 的clean 、compile、package进行各种操作也都没问题,但是单击绿色箭头运行(默认会先执行IDE本身的Build操作)却报:程序包xxx不存在,这篇文章主要介绍了解决idea maven项目启动项目不编译target文件问题,需要的朋友可以参考下2023-05-05使用Java和SpringBoot实现服务器发送事件(Server-Sent Events)
使用Java开发web应用,大多数时候我们提供的接口返回数据都是一次性完整返回,有些时候,我们也需要提供流式接口持续写出数据,以下提供一种简单的方式,本文给大家介绍了如何在Java web中实现服务器发送事件,需要的朋友可以参考下2024-02-02Java中POST、GET、@RequestBody和@RequestParam区别详析
在前后端传json数据进行交互的时候,同学们会经常用到的两个注解,@RequestBody和@RequestParam主要是用来接收前端传给后端的json数据,下面这篇文章主要给大家介绍了关于Java中POST、GET、@RequestBody和@RequestParam区别的相关资料,需要的朋友可以参考下2022-10-10SpringBoot访问接口自动跳转login页面的问题及解决
这篇文章主要介绍了SpringBoot访问接口自动跳转login页面的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12MySQL text类型对应mybatis jdbcType类型方式
这篇文章主要介绍了MySQL text类型对应mybatis jdbcType类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-07-07
最新评论