前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【设计模式】代理模式 ( 简介 | 适用场景 | 优缺点 | 代理扩展 | 相关设计模式 )

【设计模式】代理模式 ( 简介 | 适用场景 | 优缺点 | 代理扩展 | 相关设计模式 )

作者头像
韩曙亮
发布2023-03-29 15:34:30
3620
发布2023-03-29 15:34:30
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、代理模式简介


代理模式 : 为 其它对象 提供 一种代理 , 以 控制 对 这个对象 的访问 ;

代理对象 在 客户端 和 目标对象 之间 起到 中介的作用 ;

如 : 租客通过中介找房东租房子 , 房东将房子托管给了中介 , 房东是目标对象 , 但是租赁行为是中介来执行的 , 中介是代理类 , 租客 就是 客户端 ; 中介 代理 房东 进行租赁行为 , 相当于 代理类对目标对象进行了增强 ;

客户端 通过 代理类 与 目标对象 进行交互 , 客户端 不直接接触 目标对象 ;

代理模式类型 : 结构性 ;

二、代理模式适用场景


代理模式适用场景 :

  • 保护目标对象 : 客户端 只与 代理类 进行交互 , 不清楚 目标对象 的具体细节 ; 相当于 租客 只与 中介 进行交互 , 不知道房东的信息 ;
  • 增强目标对象 : 代理类 在 目标对象的基础上 , 对 目标对象的功能 进行增强 ;

三、代理模式优缺点


代理模式优点 :

  • 分离目标对象 : 代理模式 能将 代理对象 与 真实被调用的 目标对象 分离 ;
  • 降低耦合 : 在一定程度上 , 降低了系统耦合性 , 扩展性好 ;
  • 保护目标对象 : 代理类 代理目标对象的业务逻辑 , 客户端 直接与 代理类 进行交互 , 客户端 与 实际的目标对象之间没有关联 ;
  • 增强目标对象 : 代理类 可以 在 目标对象基础上 , 添加新的功能 ;

代理模式缺点 :

  • 类个数增加 : 代理模式 会 造成 系统中 类的个数 增加 , 比不使用代理模式增加了代理类 , 系统的复杂度增加 ; ( 所有的设计模式都有这个缺点 )
  • 性能降低 : 在 客户端 和 目标对象 之间 , 增加了一个代理对象 , 造成 请求处理速度变慢 ;

四、代理扩展


静态代理 : 在代码中 , 使用指定的代理 ; 显示的定义了一个业务实现类代理 ; 在代理类中 , 对同名的业务方法进行包装 , 用户通过调用 代理类中 被包装过的业务逻辑方法 , 来调用 被包装对象 的业务方法 , 同时对目标对象的业务方法进行增强 ;

动态代理 : 由 JDK 提供 , 只能对 实现的接口的类 进行动态代理 , 不能代理具体的实现类 ; 通过 接口 中的 方法名 , 在 动态生成的 代理类 中 , 调用 业务实现类 的 同名方法 ;

JDK 动态代理 , 用到的代理类 , 是在程序调 用到代理对象时 , 由 Java 虚拟机创建 , Java 虚拟机 根据传入的 业务实现类对象 以及 方法名 , 动态地创建代理类 Class 文件 , 当该 Class 文件被字节码引擎执行 , 通过该代理类对象进行目标方法的调用 ;

动态代理无法代理类 , 只可以代理接口 ;

CGLib 代理 : 可以 针对类实现进行代理 ;

如果要 代理一个类 , CGLib 会生成一个被代理类的子类 , 通过 继承该类 并 覆盖其中的方法 ; 如果该类时 final 的 , 则无法被继承 , 如果类中的方法是 final 的 , 该方法无法被重写 ; 使用 CGLib 代理要特别注意 final 修饰符 ;

五、代理模式相关设计模式

代理模式和装饰者模式 :

  • 装饰者模式 是为 目标对象 添加行为 ;
  • 代理模式 目的是进行 控制访问 , 代理模式 注重 通过设置 代理对象 的方式 , 增强目标对象 , 一般是 增强目标对象的某些行为 ;

代理模式和适配器模式 :

  • 适配器模式 主要 改变 所考虑对象的接口 ,
  • 代理模式 不能 改变 代理类的接口 ,
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、代理模式简介
  • 二、代理模式适用场景
  • 三、代理模式优缺点
  • 四、代理扩展
  • 五、代理模式相关设计模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档