重温设计模式--代理、中介者、适配器模式的异同

火星遥感数据的获取与处理工具安装详解 有关火星遥感影像数据的那些事... 阅读详情

1、相同点

  • 目的都是为了更好地处理对象之间的关系:这三种模式都是在软件设计中用于处理对象之间的关联和交互,以达到优化系统结构、增强可维护性等目的。它们都在一定程度上隐藏了对象之间的某些细节或者复杂性,使得系统的设计更加合理。
  • 都属于结构型设计模式:中介者模式、代理模式和适配器模式都归类于结构型设计模式。结构型设计模式主要关注如何将类或对象组合成更大的结构,以满足软件系统的需求。这三种模式通过不同的方式来组织和协调对象之间的关系,从而构建出更灵活、易于维护的系统架构。

2、不同点

  • 功能和作用重点不同
    • 中介者模式:重点在于协调多个对象之间的复杂交互关系。它通过引入一个中介者对象,使得各个对象之间不再直接相互引用,而是将交互的请求和信息都发送给中介者,由中介者来统一处理和协调这些交互。例如,在一个多人在线游戏的社交系统中,玩家之间的聊天、组队、交易等复杂交互都通过游戏服务器(中介者)来进行协调,降低了玩家之间的耦合度,使得系统的交互逻辑更加集中和易于管理。
    • 代理模式:主要用于控制对另一个对象的访问。代理对象在客户端和目标对象之间起到一个中间人的作用,它可以在访问目标对象之前或之后执行一些额外的操作,如权限验证、延迟加载、缓存等。例如,在一个网络代理服务器中,它作为客户端访问互联网资源(目标对象)的代理,会先验证客户端的访问权限,然后再转发请求,同时还可能对经常访问的资源进行缓存,提高访问效率。
    • 适配器模式:侧重于解决接口不兼容的问题。当一个类的接口与期望的接口不匹配时,适配器模式提供了一种将一个类的接口转换成客户端所期望的另一种接口的方式。例如,在一个新的支付系统中,旧的银行接口与新的支付接口不兼容,通过适配器可以将旧接口的调用转换为符合新支付接口要求的形式,使得旧系统能够与新系统协同工作。
  • 对象之间的关系和协作方式不同
    • 中介者模式:多个同事对象(Colleague)都与中介者(Mediator)对象进行通信,中介者对象知道所有同事对象,并协调它们之间的交互。同事对象之间一般不直接交互,它们的交互请求都通过中介者来中转和处理。例如,在一个智能家居系统中,各种智能设备(同事对象)如灯、空调、窗帘等都和智能家居中控系统(中介者)通信,当用户通过手机APP控制这些设备时,APP将指令发送给中控系统,中控系统再根据指令协调各个设备之间的联动,如开灯的同时拉上窗帘等。
    • 代理模式:代理对象和目标对象之间是一种代理关系。代理对象代表客户端来访问目标对象,客户端只与代理对象交互,而代理对象在内部管理对目标对象的访问。例如,在一个远程对象代理的场景中,客户端调用本地的代理对象,代理对象负责将请求通过网络发送到远程的目标对象,并将目标对象的响应返回给客户端。
    • 适配器模式:适配器对象同时关联了被适配对象(Adaptee)和目标接口(Target)。它实现了目标接口,并在内部将目标接口的调用转换为对被适配对象的调用。例如,在一个将旧数据库接口适配到新的应用程序接口的场景中,适配器对象实现了新应用程序所期望的数据库访问接口,在内部将这些接口的调用转换为对旧数据库接口的调用方式,使得旧数据库能够在新应用程序中正常使用。
  • 应用场景不同
    • 中介者模式:适用于存在多个对象之间复杂交互且需要集中管理这些交互的场景,如GUI系统中的组件交互、游戏中的角色交互系统、企业信息系统中的模块间协作等。
    • 代理模式:常用于需要控制对对象的访问权限、进行资源访问优化(如缓存、延迟加载)或者远程访问对象的情况,如网络代理、安全代理、虚拟代理等。
    • 适配器模式:主要用于系统集成、接口升级等场景,当需要将不兼容的接口进行整合或者旧系统与新系统协同工作时,就会用到适配器模式,如软件系统的接口更新、硬件设备接口的转换等。
基因家族快速鉴定指南:Windows平台下的HMMER实战解析 本文详细解析了在Windows平台下使用HMMER工具进行基因家族快速鉴定的完整实战流程。通过手把手指导,从软件获取、数据准备到模型构建与序列搜索,帮助生物信息学新手无需Linux环境,即可高效完成bZIP转录因子等家族的鉴定工作,大幅降低分析门槛。 阅读详情

相关推荐

VOS3000线路对接、路由配置与路由分析操作教程

通过本教程,你应该已经掌握了VOS3000的线路对接、路由配置和路由分析的基本操作。添加备用路由:为常用前缀添加备用路由,确保在主路由失效时呼叫仍能正常进行。进入线路管理:点击“系统管理” -> “线路管理” -> “添加线路”。查看日志:在“系统日志”中查看路由选择情况,确保路由配置正确。失败原因:查看失败呼叫的原因(如“无应答”、“线路忙”等)。线路选择:选择之前添加的线路(如“供应商A”)。保存并启用:填写完毕后,点击“保存”并启用路由。路由名称:自定义一个名称(如“路由A”)。

AI_wx_3307623172的博客 2967

设计模式——代理VS中介者

代理模式和中介者模式,都会有一个中间类,即所谓的代理者和中介者,那这两个模式有哪些区别呢,我们把这两个模式放到一起来看一下。   第一回合——定义比较            代理模式:为其他对象提供一种代理以控制对这个对象的访问。          中介者模式:用一个中介对象来封装一系列的对象交互,中介者使对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

z-xiaoyao 3326

Windows如何使用Anaconda 3进行keras环境的配置

** Windows如何使用Anaconda 3进行keras环境的配置 搭建Keras环境* Anaconda3如何安装keras,主要包括下面三步: 1.安装mingw libpython 2.安装theano 3.安装keras 若你还没有按装anaconda,赶紧下载安装吧! 下载途径有两个 (1)Anaconda版本为Anaconda 4.4.0,对应的python版本为3.6,附上An...

Lance_liangliang的博客 1600

代理模式、桥接模式、中介者模式区别和联系

参考:https://www.phpmianshi.com/?id=134 联系 在现实生活中,如房屋中介、买房人、卖房人,房屋中介是一个中介,因为它担任买房人和卖房人之间的相同; 房屋中介也是一个代理,它在卖房人眼前是买房人的代理,在卖房人眼前是买房人的代理; 最后房屋中介也是一个桥接,用于连接买房人和卖房人。那这字面意思相似的三者到底有什么不同的应用场景。 代理模式 场景 1. 最常见的就是数据库中间件,他们代理了数据库的访问,访问一个集群跟访问一个单机数据...

tiancityycf的专栏 3964

汽车售后诊断 ODX 和 OTX 对比分析报告

在汽车行业不断发展的当下,汽车售后诊断技术对于保障车辆性能、维护车主权益以及提升汽车品牌服务质量起着至关重要的作用。随着汽车电子化程度的不断提高,售后诊断所涉及的数据和流程愈发复杂,这就促使行业需要更加标准化、高效化的诊断技术方案。开放诊断数据交换(ODX)和开放测试序列交换(OTX)便是在这样的背景下应运而生的两种重要标准,它们为汽车售后诊断提供了强大的支持。本报告将深入剖析 ODX 和 OTX 的技术细节、应用场景、优势与挑战,并进行全面的对比,旨在为汽车行业从业者在选择和应用这两种标准时提供有价值的参

芊言凝语 1637

VCSA 6.7证书过期别慌!手把手教你通过SSH修改系统时间恢复登录(附STS证书修复脚本)

本文详细介绍了VCSA 6.7证书过期的应急处理方案,包括通过SSH修改系统时间临时恢复登录、全面更新证书体系以及专项修复STS证书的实战步骤。文章还提供了后期验证和系统加固的建议,帮助运维人员有效应对证书过期问题,确保虚拟化平台的稳定运行。

weixin_31292729的博客 415

中介者模式、代理模式和外观模式的Pk

在学习设计模式的时候,发现这三个模式在一定程度上很是相似。所以总结一下,加以区分。

Winter--王大梅 1万+

嵌入式代码审计中常见的漏洞(四)

经过漫长时间的迭代更新,内容从一开始的碎片化网罗搜集,到排版与整合划分,再到学习与实践验证,最后摒弃初始,用自己的语言与实践结论通俗的将它展现出来。强化知识技能的同时也为读者带来更好的阅读体验。 本篇介绍了以下代码安全问题: 编号 漏洞 1 敏感信息硬编码 2 未初始化安全 3 越界访问 4 迭代器失效 5 迭代器尾部解引用

武天旭的博客 3315

设计模式:代理模式、中介者模式、桥接模式

代理模式为其他对象提供一个代理以控制对真实对象的访问。代理类与真实主题具有相同的接口,因此在客户端看来两者是可以互换的。代理可以用于增强控制、增加额外功能(如日志、权限检查等)而不影响原有对象。中介者模式定义了一个中介对象来封装一系列对象之间的交互。中介使得各个对象不需要显式地相互引用,从而降低了耦合度。桥接模式将抽象部分与实现部分分离,使它们可以独立变化。它使用组合关系代替继承关系来解耦。

易之阴阳,量子纠缠,道之一体,缘起性空 781

AI上推荐 之 多任务loss优化(自适应权重篇)

1. 写在前面 在多任务学习中,往往会将多个相关的任务放在一起来学习。例如在推荐系统中,排序模型同时预估候选的点击率和浏览时间。相对于单任务学习,多任务学习有以下优势: 多个任务共享一个模型,占用内存量减少; 多个任务一次前向计算得出结果,推理速度增加; 关联任务通过共享信息,相互补充,可以提升彼此的表现。 前面的一篇文章,主要是从模型结构的角度聊了下多任务学习,介绍了工业界非常经典也常用的MMOE模型,然而,对于多任务学习, Loss的优化也非常重要, 因为我们知道通过多个目标去指导网络进行统一的训练

Miracle8070 1万+

OpenCV实现文档扫描OCR识别(基于Python + OpenCV,含完整代码)

在当今数字化时代,文档处理的自动化需求日益增长。文档扫描OCR(Optical Character Recognition,光学字符识别)技术成为了将纸质文档转换为可编辑电子文本的关键手段。通过Python与OpenCV库的结合,我们能够实现高效、准确的文档扫描OCR识别。这一技术在办公自动化、数字图书馆、档案管理等众多领域都有着广泛的应用。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2030

中介模式(Mediator Pattern) vs. 代理模式(Proxy Pattern)的区别

/ 代理持有真实对象。= sender) { // 不给自己发。// Bob 收到消息。// 初始化时加载图片(耗资源)image.display();// 第一次调用时才加载图片。,代理决定是否/如何调用真实对象。// 具体中介者(聊天室)// 真实主题(真实图片)// 代理(控制访问)// 同事类(用户)

2301_81882590的博客 1442

060、模型蒸馏:把扩散模型压进单步的魔法

《端侧文生图模型蒸馏实战:从32步到1步的优化之道》摘要:针对边缘设备部署难题,本文分享了扩散模型蒸馏的核心经验。通过重构损失函数(感知损失+对抗训练+KL散度)、优化采样轨迹截取策略和改造学生模型架构,成功将Stable Diffusion压缩至单步推理。关键发现包括:小批量训练更有效、标签平滑保障生成多样性、双模型策略平衡质量与速度。在Cortex-A53芯片上实现300ms内生成,内存占用控制在200MB以下。特别强调工业部署需权衡压缩率与稳定性,建议保留迭代模式开关以适配不同场景需求。

2601_95651806的博客 149

重温设计模式-外观模式和适配器模式的异同

例如,目标接口有方法request(),被适配者有方法specificRequest(),适配器的request()方法内部会调用被适配者的specificRequest()方法并进行适当的转换来适配接口。它更像是一个一站式服务,通过一个简单的接口来封装一系列复杂的子系统操作,让客户端能够方便地使用子系统的功能,而不用关心子系统内部的细节和复杂的交互关系。外观类和子系统类之间是一种委托关系,外观类不改变子系统类的接口,只是将多个子系统类的操作组合起来,提供一个更方便的接口给客户端使用。

doubleintfloat的博客 868

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【重走编程路】设计模式概述(番外) -- 适配器、装饰器、代理、桥接模式对比

在设计模式中,适配器、装饰、代理和桥接都是结构型设计模式,它们都用于处理类与类之间的结构关系,但是它们各自有不同的用途和适用场景

weixin_44595767的博客 1727

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

面向对象设计与分析40讲(25)中介模式、代理模式、门面模式、桥接模式、适配器模式

该模式为客户端提供一个高级接口,隐藏了系统内部子系统的复杂性,使得客户端只需与门面对象交互,而无需了解底层子系统的实现细节。门面(Facade):提供了一个简化的接口,将客户端的请求委派给底层的一个或多个子系统,通过门面对象可以访问底层子系统的功能。抽象主题(Subject):定义了被代理对象和代理对象之间的公共接口,这样在任何使用被代理对象的地方都可以使用代理对象替代。在代理模式中,代理对象充当了被访问对象的替身,客户端通过代理对象间接地访问和操作被代理的对象,而不需要直接访问被代理对象。

二进制君 1818

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++ 大话设计之《中介者模式》(优缺点,设计原理,常用场景)

中介者模式(Mediator Pattern)用于降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护....

m0_64139262的博客 318

中介模式与代理模式的异同在哪里

何时选择代理模式:当需要控制对象的访问权限、优化资源使用(如延迟加载)、或为远程对象提供本地代表时。何时选择中介模式:当系统包含大量相互通信的对象,导致依赖关系混乱,需要集中管理交互逻辑时。交互关系 多对多关系 (多个同事对象间通信) 一对一关系 (客户端访问目标对象)主要目的 协调多个对象之间的复杂交互 控制对单个对象的访问。关系结构 一对一(客户端与目标对象) 多对多(同事对象间)对象数量 涉及多个对象 主要涉及两个对象(客户端和目标)关注点 对象间的交互逻辑 对象创建的优化或访问控制。

slty_123的博客 488

软考+设计模式总结-代理+适配器模式+中介者模式的比较

通过软考,对设计模式又有了新的认识,第一遍对设计模式的学习,只是单个的学习每个设计模式,没有放一块 儿比较,这次软考通过将不同的设计模式放一块儿比较学习,发现好多设计模式本质上其实是一样的,合并同类项, 会发现知识少了,掌握起来就更容易了。下面对代理、适配器、中介者进行一下简单比较。 不同:     代理:为其他对象提供一个代理以控制对这个对象的访问。     适配器:将一个类的接口转换

Aldeo 2531

外观模式、代理模式和中介者模式的区别

外观模式(Facade Pattern) 定义一个外观类,外观类隐藏系统的复杂性,为客户端提供简化的方法和对现有系统类方法的委托调用。 例如:二手房交易的中介,属于外观模式。买房者通过中介可以简单地买到二手房,中介自己把联系房东看房砍价、过户、交税这些复杂的事情都搞定了。 代理模式(Proxy Pattern) 用一个代理类代表另一个类的功能,但是不改变被代理类的功能。目的是控制对被代理类的访问。...

cjxunooo的博客 7738

java 开发模式之七 : 适配器模式

原理或定義 适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。 将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。 结构 目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要适配的类(Adapt

MoShimWang的博客 377

适配器模式(AdapterPattern)

定义 将一个接口转换客户希望的另一个接口,使接口不兼容的那些类能够一起工作,又名包装器(Wrapper)。适配器模式可以为对象适配器模式,也可以是类适配器模式 结构图 角色与理解 对象适配器模式包含如下角色 Target(目标抽象类):定义客户所需接口,可以是接口、抽象类或者具体类 Adapter(适配器):继承实现Target关联Adaptee,完成接口的转换 Adaptee(适配者):定义存在的接口被适配器适配 对象适配器的核心是适配器继承或者实现目标类委派适配者(.

码农架构 645

适配器模式和中介模式在以下方面存在区别

定义与目的。

2301_81882590的博客 410

前端常见设计模式

前端设计模式是在前端开发中常用的一些设计思想或者编程范式,它们旨在解决特定的问题,并提供了一种可复用的解决方案。

前端工作学习中 3892

7. 适配器模式、外观模式、中介者模式

7.1 适配器模式 将一个类的接口(Adaptee)转换成客户期望的另一个接口(Target)。适配器让原本接口不兼容的类可以合作无间 类图 7.1.1 应用场景 要使用一个现有的类(WildTurkey)而其接口(Turkey)不符合你的需求(Duck)时,使用适配器(Adapter) 代码 WildTurkey turkey = new WildTurkey(); //如下代码不允许...

hanzong110的博客 405

相似又不相同的模式:外观模式、中介者模式、代理模式

前言:学习设计模式的时候,我发现了外观模式、中介者模式、代理模式在概念上有很大的相似之处。如果完全相同也就没有必要有三个模式来引入设计模式的思想了。之后我查阅了资料和询问了前辈。对三种模式进行了区分: 外观模式 外观模式主要是为了隐藏系统的复杂性,而统一用外观接口让复杂的接口调用变的更加简洁和方便,目的是为了降低访问复杂系统的内部子系统时的复杂程度,简化客户端与之的接口。 中介者模式 中介者模式是要是为了降低两个对象之间直接通信设计上的耦合度。源对象不需要知道被调用服务方的具体类,只需要调用中介者类,由中

weixin_45937536的博客 888
上一篇: 重温设计模式--6、享元模式
下一篇: C++ 11新特性
越甲八千
博客等级 码龄11年 2953粉丝 553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值