前言

中介者模式听名字就能想到也是一种为了解决耦合度的设计模式,其实中介者模式在结构上与观察者、命令模式十分相像;而应用目的又与结构模式“门面模式”有些相似。但区别于命令模式的是大多数中介者角色对于客户程序是透明的。当然造成这种区别的原因是由于他们要达到的目的不同。

中介者模式

概念介绍

中介者模式是指用一个中介对象来封装一系列的对象交互。中介者使个对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单地说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别与“中介”对象引用或者依赖。

例如下面这个结构,如果每个元素两两之间要产生联系,关系就会变得错综复杂。

但是加了中介者之后,相互之间就可以解耦了。变成如下的关系结构。

举例

和二跟老纪都是朝廷大臣,但是互相看不顺眼,在皇上面前和和气气,背地里各自互相参对方。当然有时候皇上颁布旨意时让两个大臣一起合作去完成任务,他们也会相互合作的。和二跟老纪都想收拾对方,但是奈何双方官职不相上下,所以当想收拾对方时就会通过皇上来实现,这个时候我们就当皇上理解为中介者(感觉有点牵强,就这样吧

中介者模式 java_Java设计模式学习记录-中介者模式相关推荐

  1. 【一】Java 设计模式学习记录: 工厂模式

    文章目录 一.设计模式的分类 二.工厂模式 2.1 简单工厂模式 2.1.1 解决的问题 2.1.2 简单工厂模式是什么 2.1.3 优缺点 2.2 工厂方法模式 2.2.1 解决的问题 2.2.2工 ...

  2. 23种设计模式学习记录之代理模式

    想说的话: 在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vu ...

  3. 设计模式学习笔记——中介者(Mediator)模式

    设计模式学习笔记--中介者(Mediator)模式 @(设计模式)[设计模式, 中介者模式, Mediator] 设计模式学习笔记中介者Mediator模式 基本介绍 中介者案例 类图 实现代码 Me ...

  4. 设计模式学习笔记——命令(Command)模式

    设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...

  5. 设计模式学习笔记——状态(State)模式框架

    设计模式学习笔记--状态(State)模式框架 @(设计模式)[设计模式, 状态模式, State] 设计模式学习笔记状态State模式框架 基本介绍 状态案例 类图 实现代码 State接口 Day ...

  6. 设计模式学习笔记——解释器(Interpreter)模式

    设计模式学习笔记--解释器(Interpreter)模式 @(设计模式)[设计模式, 解释器模式, Interpreter] 设计模式学习笔记解释器Interpreter模式 基本介绍 解释器案例 类 ...

  7. 设计模式学习笔记——代理(Proxy)模式

    设计模式学习笔记--代理(Proxy)模式 @(设计模式)[设计模式, 代理模式, proxy] 设计模式学习笔记代理Proxy模式 基本介绍 代理案例 类图 实现代码 Printable接口 Pri ...

  8. 设计模式学习笔记——备忘录(Memento)模式

    设计模式学习笔记--备忘录(Memento)模式 @(设计模式)[设计模式, 备忘录模式, memento] 设计模式学习笔记备忘录Memento模式 基本介绍 备忘录案例 类图 实现代码 Memen ...

  9. 设计模式学习笔记——外观(Facade)模式

    设计模式学习笔记--外观(Facade)模式 @(设计模式)[设计模式, 外观模式, facade] 设计模式学习笔记外观Facade模式 基本介绍 外观案例 类图 实现代码 Database类 ma ...

  10. 设计模式学习笔记——访问者(Visitor)模式

    设计模式学习笔记--访问者(Visitor)模式 @(设计模式)[设计模式, 访问者模式, visitor] 设计模式学习笔记访问者Visitor模式 基本介绍 访问者案例 类图 实现代码 Visit ...

最新文章

  1. 你玩《2048》能拿多少分?AI的最高分纪录:401912
  2. SQL 时间类型转字符串格式列表
  3. 序列变换(Lis变形)
  4. Netflix推荐系统(Part two)-系统架构
  5. 2018蓝桥杯省赛---java---B---2(方格计数)
  6. 发一个flash+PHP的简单上传代码
  7. Ssm框架实现的学生信息管理系统
  8. 我发现了 Microsoft Azure 中的两个漏洞
  9. OCR文本扫描 轮廓检测 透视变换-唐宇迪笔记
  10. kettle 使用教程(入门)
  11. 使用ETest实现汽车ECU的HIL测试
  12. Linux用户和权限管理看了你就会用啦
  13. 世界上主流的导航电子地图数据标准/格式
  14. 单片机的ISP是什么
  15. QT Creator 5.1.2中英文切换
  16. “好家园房产中介网后台管理”python项目
  17. 华为手机如何与台式计算机连接不上,华为手机怎样与电脑连接?USB数据线及WLAN无线两种连接电脑方式介绍...
  18. 「CTS2019」氪金手游
  19. 框架技术----Spring介绍
  20. Thymeleaf select 实现默认选中,使用 th:field 字符串无效问题

热门文章

  1. mmd 到 blender 到 ue4/ue5 缩放比例相关的处理流程
  2. 手机王者荣耀怎么投屏到电脑
  3. bldc 原理 方波控制_浅析无刷直流电机FOC、方波、正弦波控制!
  4. 【Go学习】GO语言异常处理机制panic和recover分析
  5. silvaco的石墨烯fet仿真_两米长的高功率因子石墨烯膜!散热发电两不误!
  6. 【软考】系统集成项目管理工程师(八)项目进度管理
  7. R语言数据缺失值处理
  8. qpython3 l_QPython 3(com.hipipal.qpy3) - 3.0.0 - 应用 - 酷安网
  9. 对java方法进行功能增强的三种方法
  10. c 语言中的this指针,C++ this指针详解