当前位置: 首页 > article >正文

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

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

1. 目的

  • 代理模式(Proxy Pattern)

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

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

2. 使用场景

  • 代理模式

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

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

3. 设计模式的实现

代理模式

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

代理模式的实现:

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

http://www.kler.cn/a/454813.html

相关文章:

  • 《OpenCV计算机视觉》-对图片的各种操作(均值、方框、高斯、中值滤波处理)及形态学处理
  • Go主协程如何等其余协程完再操作
  • LeetCode--347.前k个高频元素(使用优先队列解决)
  • “事务认证平台”:个人日常事务管理系统的诚信体系建设
  • C#使用Tesseract C++ API过程记录
  • node-js Express防盗链
  • 【视觉惯性SLAM:八、ORB-SLAM2:特征匹配】
  • 外键约束的应用层维护
  • Spring Boot 自动配置:从 spring.factories 到 AutoConfiguration.imports
  • PlantUML 入门使用指南
  • Llama 3 后训练(三)
  • 逻辑控制语句
  • 【Unity3D】ECS入门学习(六)状态组件 ISystemStateComponentData
  • fisco-bcos手动部署区块链浏览器
  • 【Leetcode】3159. 查询数组中元素的出现位置
  • 顶会评测集解读-AlignBench: 大语言模型中文对齐基准
  • 什么是Top-p采样与Top-k采样?大模型推理时如何同时设置?解析Transformers库源代码
  • 智能合约在Web3中的作用:去中心化应用的基石
  • 探寻 OneCode 核心优势:MVVM 进阶与前后端协同之魅
  • HTML5 开发工具与调试
  • Kubernetes 的资源管理方式
  • 【Java 代码审计入门-02】SQL 漏洞原理与实际案例介绍
  • 负载均衡式在线OJ系统测试报告(Jmeter性能测试、Selenium自动化测试脚本)
  • 嵌入式单片机模数转换控制与实现详解
  • JS 设置按钮的loading效果
  • 开源 SOAP over UDP