当前位置: 首页 > news >正文

Java设计模式-中介者模式(20)

中介者模式(Mediator Pattern)是行为设计模式之一,它旨在通过定义一个中介对象来封装多个对象之间的交互关系,从而使这些对象不必相互引用,从而降低系统的耦合度并提高可维护性。在Java中实现中介者模式时,主要遵循以下步骤和组件:

核心概念

  • 中介者(Mediator):定义一个接口,用于同事对象之间的通信。它负责协调各同事对象的行为,将复杂的网状结构转换为星形结构,中介者自身则位于这个星形结构的中心。

  • 同事(Colleague):每个同事都知道中介者并且与其通信,而不是直接与其他同事通信。每个同事都有一个对中介者的引用,当需要与其他同事交互时,会通过中介者来完成。

中介者模式包含以下主要角色。 
 

1.          抽象中介者(Mediator) 角色: 它是中介者的接口,提供了同事对象注册与转发同事对象

信息的抽象方法。 

2.          具体中介者(ConcreteMediator)角色: 实现中介者接口,定义一个 List  来管理同事对

象,协调各个同事角色之间的交互关系, 因此它依赖于同事角色。 

3.          抽象同事类(Colleague)角色:定义同事类的接口,保存中介者对象,提供同事对象交

互的抽象方法, 实现所有相互影响的同事类的公共功能。 

4.          具体同事类(Concrete Colleague)角色: 是抽象同事类的

相关文章:

  • SpringBoot前置知识02-spring注解发展史
  • 【js刷题:数据结构链表之环形链表】
  • LitCTF
  • Unity Render入门
  • cuda 内核启动
  • 前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代
  • 成都爱尔胡建斌院长提醒近视超过600度,记得每年检查眼底!
  • excel转pdf并且加水印,利用ByteArrayOutputStream内存流不产生中间文件
  • attributes.nodeName和attributes.nodeValue有什么区别(代码举例说明)
  • rust的版本问题,安装问题,下载问题
  • SpringCloud微服务调用的超时机制和CompletableFuture异步调用的超时机制原理一样吗?
  • 【Linux】-Elasticsearch安装部署[16]
  • 12、Go Gin使用JWT实现认证机制
  • 晶体振荡器
  • go routing 之 gorilla/mux
  • [译] 怎样写一个基础的编译器
  • C++类中的特殊成员函数
  • CSS 提示工具(Tooltip)
  • IOS评论框不贴底(ios12新bug)
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • v-if和v-for连用出现的问题
  • 闭包,sync使用细节
  • 关于springcloud Gateway中的限流
  • 时间复杂度与空间复杂度分析
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 我的面试准备过程--容器(更新中)
  • 用Canvas画一棵二叉树
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • !!Dom4j 学习笔记
  • #大学#套接字
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (3) cmake编译多个cpp文件
  • (6)STL算法之转换
  • (HAL库版)freeRTOS移植STMF103
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (篇九)MySQL常用内置函数
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十一)手动添加用户和文件的特殊权限
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Sublime Text3配置Lua运行环境
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .htaccess配置常用技巧
  • .Net Memory Profiler的使用举例
  • .NET连接数据库方式
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • @Controller和@RestController的区别?
  • @property python知乎_Python3基础之:property
  • [20171102]视图v$session中process字段含义
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Android]使用Android打包Unity工程
  • [autojs]逍遥模拟器和vscode对接
  • [C++]:for循环for(int num : nums)