轻松掌握java中介者模式

 更新时间:2016年09月29日 11:44:10   作者:断了联系  
这篇文章主要帮助大家轻松掌握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);
 }
}

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

相关文章

  • Java 二分查找算法的实现

    Java 二分查找算法的实现

    这篇文章主要介绍了Java 如何实现二分查找算法,帮助大家更好的理解和学习Java 算法,感兴趣的朋友可以了解下
    2020-09-09
  • Java中数组的定义和使用教程(三)

    Java中数组的定义和使用教程(三)

    这篇文章主要给大家介绍了关于Java中数组的定义和使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Nacos注册中心的几种调用方式详解

    Nacos注册中心的几种调用方式详解

    Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,本文就来看下 Nacos 作为注册中心时,调用它的接口有几种方式
    2023-10-10
  • Java使用桥接模式实现开关和电灯照明功能详解

    Java使用桥接模式实现开关和电灯照明功能详解

    这篇文章主要介绍了Java使用桥接模式实现开关和电灯照明功能,较为详细的讲述了桥接模式的概念、原理并结合实例形式分析了Java使用桥接模式实现开关和电灯照明功能相关操作步骤与注意事项,需要的朋友可以参考下
    2018-05-05
  • java中transient关键字用法分析

    java中transient关键字用法分析

    这篇文章主要介绍了java中transient关键字用法,以实例形式分析了java中transient关键字的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • 详解spring mvc 请求转发和重定向

    详解spring mvc 请求转发和重定向

    这篇文章主要介绍了详解spring mvc 请求转发和重定向,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Java流程控制顺序结构原理解析

    Java流程控制顺序结构原理解析

    这篇文章主要介绍了Java流程控制顺序结构原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • SpringBoot项目防止反编译的方案

    SpringBoot项目防止反编译的方案

    最近项目要求部署到其他公司的服务器上,但是又不想将源码泄露出去,要求对正式环境的启动包进行安全性处理,防止客户直接通过反编译工具将代码反编译出来,所以本文给大家介绍了SpringBoot项目如何防止反编译,需要的朋友可以参考下
    2024-01-01
  • JDBC示例代码

    JDBC示例代码

    本教程提供了如何创建一个简单的JDBC应用程序的示例。演示如何打开一个数据库连接,执行SQL查询,并显示结果
    2014-03-03
  • Java设计模式中的抽象工厂模式解读

    Java设计模式中的抽象工厂模式解读

    这篇文章主要介绍了Java设计模式中的抽象工厂模式解读,抽象工厂模式为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类,需要的朋友可以参考下
    2023-11-11

最新评论