首页 > 编程语言 >【进阶编程】代理模式和适配模式的比较

【进阶编程】代理模式和适配模式的比较

时间:2024-12-24 17:27:34浏览次数:5  
标签:进阶 对象 适配 适配器 代理 接口 目标 模式

代理模式适配器模式(Adapter Pattern)都属于结构型设计模式,它们在某些方面有相似之处,都涉及到为其他对象提供间接访问和包装,但它们的核心目的是不同的。下面是对代理模式和适配器模式的详细比较:

1. 目的

  • 代理模式(Proxy Pattern)

    • 代理模式的目的是通过一个代理对象来控制对目标对象的访问。代理类通常会充当目标对象的替代者,在调用目标对象的实际方法之前或之后,执行某些附加的逻辑(如延迟加载、权限控制、日志记录等)。
    • 代理模式侧重于控制对象的访问,增加功能或优化性能,通常不改变目标对象的接口。
  • 适配器模式(Adapter Pattern)

    • 适配器模式的目的是将一个类的接口转换成客户端期望的接口,从而使不兼容的接口能够协同工作。适配器模式通常用于将一个现有类的接口转换为另一个接口,以便它们能够一起使用。
    • 适配器模式侧重于将一个类与不兼容的接口对接,使得类可以适配不同的接口。

2. 使用场景

  • 代理模式

    • 延迟加载:使用代理对象来延迟初始化目标对象,直到真正需要时才创建它。
    • 远程代理:当目标对象位于不同的地址空间时(如分布式应用),代理可以代表远程对象进行方法调用。
    • 权限控制:代理可以在访问目标对象之前进行权限验证,控制对敏感操作的访问。
    • 缓存/智能代理:例如,通过代理来缓存目标对象的计算结果,避免重复计算。
  • 适配器模式

    • 接口不兼容:当你需要将不同接口的类连接起来时(例如,第三方库的接口和当前系统的接口不兼容),可以使用适配器来将两者对接。
    • 遗留系统的集成:当一个新系统需要与一个已有的系统集成,而两者的接口不同,可以使用适配器模式来进行兼容。
    • 标准化不同接口:当多个类具有相似功能但接口不同时,适配器模式可以为这些类提供统一的接口。

3. 设计模式的实现

代理模式

代理模式通过创建一个代理类来控制对目标对象的访问。代理类与真实对象通常实现相同的接口,并可能在访问目标对象之前或之后进行额外的操作(例如,缓存、权限检查、延迟加载等)。代理类本身并不改变目标对象的行为或接口,而是对其进行包装。

代理模式的实现:

  • 代理类和真实类通常实现相同的接口或继承自相同的基类。
  • 代理对象对外暴露与真实对象相同的方法,可以在方法调用前后加入额外的逻辑。
public 

标签:进阶,对象,适配,适配器,代理,接口,目标,模式
From: https://blog.csdn.net/u013136510/article/details/144699153

相关文章

  • 开源for Huawei,Beam适配GaussDB实践案例分享
    沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源forHuawei适配,践行“让优秀开发者支持更优秀开发者”的理念。之前我们介绍了fake2db的适配过程,本文主要分享一位开源开发者参与Beam适配GaussDB的实践经验。Beam是一个由ASF社区孵化的开......
  • STM32高级:CAN通讯案例1:环回静默模式测试 (寄存器代码)(详解)
    目录需求描述思路:初始化函数GPIO引脚模块1    RCC2    AFIO3        GPIOCAN模块1        MCR和MSR2        MCR发送报文1    TSR2        数据帧的书写(邮箱寄存器)1        TIxR(TIR)3   ......
  • 学习高校课程-软件设计模式-状态、策略和模版模式(lec12)
    State:ProblemAfinitenumberofstatesTheprogrambehavesdifferentlywithinastateCanbeswitchedfromonestatetoanother,andswitchingrules(transitions)arealsofiniteandpredetermined有限数量的状态程序在某个状态下的行为有所不同可以从一种状态......
  • 设计模式概述
    文章目录1.设计模式概述1.1软件设计模式的产生背景1.2软件设计模式的概念1.3学习设计模式的必要性1.4设计模式分类1.设计模式概述1.1软件设计模式的产生背景"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加......
  • 402、基于51单片机的洗衣机仿真设计(数码管,2模式,中断)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网......
  • Next.js 14 路由进阶:从约定式到动态路由的最佳实践
    在Next.js14中,路由系统是最核心的功能之一。AppRouter不仅带来了更好的性能,还提供了更灵活的路由组织方式。今天,我们就来深入探讨Next.js14的路由系统。路由组织结构1.基础约定Next.js14的路由基于文件系统,每个文件夹代表一个路由段:app/├──page.tsx......
  • 学习高校课程-软件设计模式-备忘录模式和观察者模式(lec11)
    Memento:ProblemExample:supportingundoinatexteditorappProblem1:privatefieldscannotbeaccessedProblem2:whenfieldsaremadepublic,refactoringwouldbeproblematicProblem3:thefieldsofthesnapshotclassneedtobepublic,exposingal......
  • 国家政策引领,无人系统物流新模式或成CES Asia 2025亮点
    近日,中共中央办公厅、国务院办公厅印发的《有效降低全社会物流成本行动方案》提出,鼓励发展与平台经济、低空经济、无人驾驶等相结合的物流新模式,大力推广无人车、无人船、无人机、无人仓以及无人装卸等技术装备。这一政策导向为物流行业的发展注入了新的活力,也让即将到来的CES......
  • 德普微一级代理 DP2601X SOP-7 带自供功能的多模式、恒压恒流原边控制功率开关
    主要特点带自供电功能,变压器无需辅助绕组具备快速启动功能启动时具有 Line BOP 功能集成 800V 高压功率 BJT±5% 恒流、恒压精度多模式原边控制方式工作无异音可调式线损补偿l 集成线电压和负载电压的恒流补偿集成完善的保护功能:   短路保护 (SLP) ......
  • MySQL主从复制中启用GTID(全局事务标识符)模式
    在MySQL中启用GTID(全局事务标识符)模式进行主从复制涉及几个步骤。GTID为每个事务赋予一个唯一的标识符,从而简化了复制过程和故障恢复。以下是启用GTID模式的基本步骤:首先确保两台数据库目前数据保持一致1.准备工作确保您使用的MySQL版本支持GTID。GTID从MySQL5.6版本开始支持......