中介者模式和观察者模式的区别_序列中介作用

中介者模式和观察者模式的区别_序列中介作用中介者模式 Mediator动机模式定义结构要点总结笔记动机在软件构建过程中,经常会出现多个多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系.如果遇到一些需求的更改.这种直接的引用关系将面临不断地变化这种情况下,我们可以使用一个”中介对象”来管理对象间地关联关系,避免相互交互地对象之间地紧耦合引用关系,从而更好地抵御变换模式定义用一个中介对象来封装(封装变化)一系列地对象交互中.中介者使各个对象不需要显式地相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

中介者模式 Mediator

动机

在软件构建过程中,经常会出现多个多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系.如果遇到一些需求的更改.这种直接的引用关系将面临不断地变化

这种情况下,我们可以使用一个”中介对象”来管理对象间地关联关系,避免相互交互地对象之间地紧耦合引用关系,从而更好地抵御变换

模式定义

用一个中介对象来封装(封装变化)一系列地对象交互中.中介者使各个对象不需要显式地相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变他们之间地交互

结构

在这里插入图片描述

在这里插入图片描述

要点总结

  • 将多个对象间复杂的关联关系解耦,Mediator模式将多个对象间的控制逻辑进行集中管理(往往在背后需要实现调用机制),变”多个对象相互管理”为”多个对象和一个中介者关联”,简化了系统的维护,抵御了可能的变化
  • 随着控制逻辑的复杂化,Mediator具体对象的实现可能相当复杂.这时候可以对Mediator对象进行分解处理
  • Facade模式是解耦系统间(单向)的对象关联关系;Mediator模式是解耦系统内各个对象之间(双向)的关联关系
  • Facade模式是解耦系统间(单向)的对象关联关系;Mediator模式是解耦系统内各个对象之间(双向)的关联关系

笔记

  • 情景 比如更改界面的时候控件会变 更改控件的时候界面会变.界面中引用控件,控件中引用界面
  • 双向依赖关系 控件引用界面 界面引用控件
  • 结构图中 Colleage之间式不依赖地(本来是直接依赖)Mediator和Colleage之间式双向依赖 但是Colleage之间不是双向依赖了
  • ConcreteColleage1 和 ConcreteColleage2现实当中可能不是继承某个子类
  • 将对象互相错综复杂地引用 变成 他们共同引用一个Mediator 然后互相调用地时候都是通过Mediator去调用
  • 调用通知规范是灵活地
  • 直接依赖关系变成间接依赖关系
  • Fasade解决地是系统外和系统内地隔离 Mediator是系统内自己地隔离
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169035.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 时间复杂度为O(1)的Excel列名与列号转换算法

    时间复杂度为O(1)的Excel列名与列号转换算法目前大家经常使用的Excel列名与列号转换算法都至少包含一个循环算法的时间复杂度远大于O(1),众所周知Excel的列数是有上限的,既然是有穷的那么很显然我们可以做到O(1)转换列名与列号。首先我们

    2022年7月4日
    69
  • 云漫圈 | 学Python还是Java, 8张漫画带你全面分析

    云漫圈 | 学Python还是Java, 8张漫画带你全面分析戳蓝字“CSDN云计算”关注我们哦!作者:Leoxin来源:菜鸟学PythonJava和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对…

    2022年7月7日
    21
  • python编程新手常犯的错误_python数组从0还是1

    python编程新手常犯的错误_python数组从0还是1在下面的例子中,希望做到的是数组a,b中元素大于3的置为1,其余为0。应该先做置0操作。程序:importnumpyasnpa=[1,2,2,3,4,5]a=np.array(a)b=[1,2,2,3,4,5]b=np.array(b)#错误的例子a[a>3]=1a[a<=3]=0print(‘a’,a)b[b<=3]=0b[b>3]=1print(‘b’,b)输出:a[00000

    2022年8月13日
    4
  • Android游戏引擎_2d游戏引擎

    Android游戏引擎_2d游戏引擎Android游戏引擎汇总1.AndEngine简介:AndEngine基于libGDX框架开发,使用OpenGLES进行图形绘制。同时继承了BOX2D物理引擎,因此能实现一些较为复杂的物理效果。在Rokon停止更新以后,AndEngine成为Android最为流行的2D游戏引擎优点:(1)高效:在大运算量好事情况下,使用C/C++本地代码进行开发。比如物理引擎或

    2022年9月19日
    2
  • 行存储和列存储的优缺点

    行存储和列存储的优缺点按行存储:数据按行存储在底层文件系统中,通常,每一行会被分配固定的空间优点:有利于增加、修改整行记录等操作,有利于整行数据的读取操作缺点:单列查询时,会读取一些不必要的数据按列存储:数据以列为单位,存储在底层文件系统中优点:有利于面向单列数据的读取/统计等操作缺点:整行读取时,可能需要多次I/O操作…

    2022年7月14日
    25
  • Ubuntu虚拟显示器_vmware安装ubuntu屏幕太小

    Ubuntu虚拟显示器_vmware安装ubuntu屏幕太小Ubuntu20.04虚拟显示器1080P配置一、背景二、配置方法1)安装软件2)添加配置文件3)重启三、效果Reference一、背景通过VNC远程连接Ubuntu系统电脑的图形化桌面时,如该电脑未连接显示器,需配置虚拟显示器。二、配置方法1)安装软件通过终端安装虚拟显示器软件。$sudoapt-getinstallxserver-xorg-core-hwe-18.04$sudoapt-getinstallxserver-xorg-video-dummy

    2022年8月21日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号