1.基本定义区别:

观察者模式:
:察者模式属于行为型模式,指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式。

中介者模式:
中介者模式,属于行为型模式;定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。

分析:

a:都属于行为型模式
b:都为了处理一对多的关系

2.URML图区别:

观察者模式:

中介者模式:

分析:

a:处理业务逻辑的对象都被抽象化(ConcreteColleague和ConcreteObserver都符合单一职责)
b:中介者和观察者都有统一管理的list集合。
c:都有循环通知的方法

3.使用场景

观察者模式:只能从从一的一方循环的通知,属于单向。(好比上课,只能老实授课给班上所有的学生,反过来不行)
中介者模式:可以从任一方循环通知,属于双向。(好比分享会,每个人都可以分享自己的事情给别人)


总结:

从上面几个分析总结如下:

相同点:
1:都属于行为型模式
2:都为了处理一对多的关系
3:UML实现基本相同,都有集合管理业务对象的集合,都有循环通知的方法,符合单一职责原则。

不同点:
1:使用场景不同,观察者属于单向,中介者属于双向

作者:General008
链接:https://www.jianshu.com/p/747494af2f35
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

java设计模式-观察者模式和中介者模式的异同相关推荐

  1. java mediator_《JAVA设计模式》之中介者模式(Mediator)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从 ...

  2. 设计模式之观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式

    前言 这是设计模式的最后一章,包含了剩余的 行为型模式 中的 观察者模式.中介者模式.迭代器模式.访问者模式.备忘录模式.解释器模式 系列文章 第一章:7种设计原则之单一职责原则.接口隔离原则.依赖倒 ...

  3. [Java]观察者模式和中介者模式改造机场

    [Java]观察者模式和中介者模式改造机场 文章目录 [Java]观察者模式和中介者模式改造机场 题目 代码部分 运行结果 补充 题目 请以下面的情景为基础,将以下的情景进行 优化: 1. 定义4个处 ...

  4. Java设计模式-观察者模式(订阅发布模式)

    Java设计模式-观察者模式(订阅发布模式) 一起来看 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持吧!! ...

  5. Java设计模式(1)工厂模式(Factory模式)

    工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...

  6. Java设计模式(8)组合模式(Composite模式)

    Composite定义:将对象以树形结构组织起来,以达成"部分-整体" 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite比较容易理解,想到Compo ...

  7. Java设计模式(10)代理模式(Proxy模式)

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...

  8. 8-设计模式之行为型模式二(状态模式、观察者模式、中介者模式)

    设计模式之行为型模式二(状态模式.观察者模式.中介者模式) 6.5 状态模式 6.5.1 概述 6.5.2 结构 6.5.3 案例实现 6.5.4 优缺点 6.5.5 使用场景 6.6 观察者模式 6 ...

  9. 【Java设计模式】简单学访问者模式——我的选择是,Yes

    目录 说明 实现方式 优点 缺点 应用场景 其他链接 说明 行为型模式之一,其他还有命令模式.模板方法模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式(Interpreter模式).状 ...

最新文章

  1. 跨平台PHP调试器设计及使用方法——拾遗
  2. 一步一步写二叉查找树
  3. 玩转Autorun.inf
  4. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
  5. 微型计算机技术怎么学,浅谈微型计算机技术课程的启发式教学
  6. 通过node 完成简单的web3 API调用测试
  7. js 绘制泳道图_软件工程师,如何绘制业务架构图 — 4.流程图
  8. Android开发文档
  9. Mysql替换字段中的内容
  10. 《流畅的Python第二版》读书笔记——字典和集合
  11. [转] 背完这444句英语,你的口语绝对不成问题
  12. html实现颜色色板,JS实现的系统调色板完整实例
  13. oracle学习笔记 学习前奏
  14. 一、super slomo介绍
  15. CCF系列题解--2015年9月第二题 日期计算
  16. html适合做标题得字体,40个漂亮英文字体-而且适合制作大标题哦
  17. SkyWalking告警
  18. android中LitePal的使用
  19. 每日一题——整数除法
  20. A-level Computer Science 计算机科学学习笔记/经验分享/教学 (1):考试流程和大纲

热门文章

  1. POJ 3265 Problem Solving 动态规划
  2. 小米玩机------MIUI里那些你可能不知道的冷知识
  3. 运行Django项目报错解决,OSError: [WinError 123] 文件名、目录名或卷标语法不正确。
  4. Havel–Hakimi算法学习笔记(哈维尔算法)详细【Python】
  5. 客户体验和客户服务的区别
  6. 内嵌式js微信扫码登录及自定义样式
  7. conda search cuda后没有版本10的问题
  8. android ca,如何在Android设备上安装可信CA证书?
  9. php获得视频分辨率,php+ffmpeg 获取视频相关信息(缩略图、视频分辨率)
  10. 深圳大学算法实验一——排序算法性能分析