设计模式——代理模式(Proxy)

代理模式(Proxy Pattern)是程序设计中的一种设计模式,其核心概念是为一个对象提供一个代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,此时可以通过一个代理对象来实现间接引用。

代理模式涉及的主要角色包括:

  1. 抽象主题角色(Subject):声明了真实主题和代理主题的共同接口,这样在任何使用真实主题的地方都可以使用代理主题。
  2. 真实主题角色(RealSubject):定义了代理角色所代表的真实对象,即实现了业务逻辑的对象。
  3. 代理角色(Proxy):实现抽象主题角色,是真实主题的代理,通过真实主题的业务逻辑方法来实现抽象方法,并可以附加自己的操作。

代理模式的主要优点有:

  • 职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过代理完成事务,使得编程更加简洁清晰。
  • 中介和保护作用:代理对象可以在客户端和目标对象之间起到中介的作用,起到了中介和保护目标对象的作用。
  • 高扩展性:代理模式允许在不修改原始类的情况下,为原始类添加额外的功能。

代理模式的主要使用场景包括:

  1. 远程代理:当对象位于不同的地址空间中时,可以通过远程代理来访问对象。远程代理可以隐藏对象的具体实现细节,并提供网络通信的功能。
  2. 虚拟代理:当对象的创建和初始化过程比较耗时时,可以使用虚拟代理来延迟对象的创建。虚拟代理会在需要时才创建实际的对象,并在创建完成后将请求转发给实际对象。
  3. 安全代理:当需要对对象的访问进行控制时,可以使用安全代理。安全代理会在客户端访问目标对象之前进行权限验证,确保只有具有相应权限的客户端才能访问目标对象。

代码实现方面,代理模式分为静态代理和动态代理。静态代理是由程序员创建或工具生成代理类的源码,再编译代理类;而动态代理是在运行阶段才指定代理对象。

总的来说,代理模式是一种灵活且强大的设计模式,可以在不修改原始类的情况下为对象提供额外的功能或控制访问,适用于各种需要间接引用或控制对象访问的场景。

相关推荐
geovindu11 小时前
rust: Abstract Factory pattern
开发语言·后端·设计模式·rust·抽象工厂模式
Carl_奕然19 小时前
【智能体】Loop 的四种设计模式之:Event-Driven Loop(2026 最新版)
人工智能·驱动开发·python·设计模式
Carl_奕然19 小时前
【智能体】Loop 的四种设计模式之:Hill Climbing Loop(2026 最新版)
人工智能·python·设计模式
晚安code2 天前
设计模式入门:吃透 SOLID 原则与迪米特法则,再学 5 个高频模式
后端·设计模式
染指11102 天前
135.Agent-多Agent框架-LangChain多智能体(SubAgents子代理)
数据库·人工智能·设计模式·langchain·agent·agents
路弥行至3 天前
【Head First 设计模式】第 2 章:观察者模式 —— 用现代 C++ 重新解读“交互对象的松耦合
c++·经验分享·笔记·观察者模式·设计模式·入门教程·headfirst
YYYing.3 天前
【设计模式系列 (九) 】装饰器模式
c++·后端·设计模式·装饰器模式·c/c++
沫璃染墨3 天前
《从零入门Linux系统篇(五十六):线程篇·九——生产者消费者模型:从条件变量到BlockingQueue实现》
linux·服务器·c++·驱动开发·设计模式·架构·系统架构
c萱4 天前
AI产品经理——01基础认知篇
设计模式·prompt·aigc·产品经理·ai编程·gitcode·ai-native
YYYing.4 天前
【设计模式系列 (八) 】组合模式
c++·后端·设计模式·组合模式·c/c++