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

【代理模式】

定义:代理模式是一种结构型设计模式,它允许我们创建一个代理对象,用于控制对另一个对象的访问。

代理对象充当了被代理对象(目标对象)的代表,与被代理对象实现相同的接口,从而实现对被代理对象的间接访问,对被代理对象的访问进行控制和增强。

类型:静态代理和动态代理。

静态代理:是在编译时期就已经确定代理关系的代理方式。在静态代理中,需要手动创建代理类,并在代理类中编写对被代理对象的调用逻辑。静态代理的优点是简单易懂,但缺点是对每个被代理类都需要创建相应的代理类,代码量会较大。

动态代理:是在运行时动态地创建代理对象的代理方式。在动态代理中,不需要手动创建代理类,而是通过使用Java反射机制来动态生成代理类。常见的动态代理技术有JDK动态代理和CGLIB动态代理。动态代理的优点是可以减少代理类的数量,并且可以更灵活地应对不同类型的被代理对象,但也存在一定的性能损耗。

JDK 动态代理要求目标对象实现一个或多个接口,它通过动态生成一个实现了目标对象接口的代理类,在代理类中完成横切逻辑的织入。JDK 动态代理是基于接口来实现的,因此只能代理实现了接口的类。

CGLIB 动态代理则不要求目标对象实现接口,它通过生成目标对象的子类,并在子类中完成横切逻辑的织入。CGLIB 动态代理是基于继承来实现的,因此可以代理没有实现接口的类。


 


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

相关文章:

  • 数据结构与算法之栈: LeetCode 739. 每日温度 (Ts版)
  • doris:异常数据处理
  • HTML 标题
  • Deepseek技术浅析(一)
  • Android NDK
  • 能说说MyBatis的工作原理吗?
  • 【iOS ARKit】3D人体姿态估计实例
  • SpringCloud-Eureka原理分析
  • 2.0 Zookeeper 安装配置
  • WordPress如何实现随机显示一句话经典语录?怎么添加到评论框中?
  • Maven构建OSGI+HttpServer应用
  • 【Flask + AI】接入CHATGLM API 实现翻译接口
  • UML 2.5图形库
  • C++算法学习心得八.动态规划算法(1)
  • 前端性能优化:提升网站加载速度的终极指南
  • LeetCode回溯算法的解题思路
  • 使用 Matlab 拟合函数
  • 无广告iOS获取设备UDID 简单方便快捷
  • 常用ES技巧二
  • Transformer实战-系列教程11:SwinTransformer 源码解读4(WindowAttention类)
  • 算法学习打卡day47|单调栈系列题目
  • Android 11 访问 Android/data/或者getExternalCacheDir() root方式
  • FTX重启“梦碎”,FTT沦为“空气币”
  • 03 动力云客项目之登录功能后端实现
  • Excel——合并计算
  • Adb offline疑难杂症解决方案大全记录