当前位置:网站首页>动态代理
动态代理
2022-07-01 08:33:00 【SXHENIGA】
一、什么是代理
简述:代购、中介、梯子、商家等等
特点:代理和目标都要做的事情是一致的

二、代理模式
简述:代理模式是指,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另外一个对象,而代理对象可以在客户类和目标对象之间起到中介的作用。简而言之:目标对象不可访问,通过代理对象增强功能访问;
作用:增强功能【增加额外功能】;控制目标对象的访问;
分类:静态代理【①代理类是自己手工实现的②目标类需要是确定的】;动态代理;
三、静态代理
特点:目标对象和代理对象实现同一个业务接口;目标对象必须实现接口【相比动态代理】;代理对象在程序运行前就已经存在;能够灵活的进行目标对象的切换,却无法进行功能的灵活处理
缺点:静态代理中,代理的功能是写死的,无法动态改变,并且这个功能在项目启动的时候就已经存在了;如果想新增代理的功能,就需要在接口、目标类和代理类之间新增代码,影响比较多,动态代理可以自动生成代理类。
实现:
0、项目目录
2、创建厂家类【目标类】,实现步骤1的接口
3、创建商家,就是代理,也需要实现步骤1的接口
4、创建客户端类,调用商家的方法买东西
|
四、动态代理
简述:代理对象在程序运行过程中动态的在内存构建,可以灵活的进行业务功能的切换。换句话说:代理类对象在程序运行时又JVM根据反射机制动态生成的,不需要定义代理类的.java对象
1、JDK的动态代理:
简述:使用java反射包中的类和接口实现动态代理的功能
特点:目标对象必须实现业务接口;JDK代理对象不需要实现业务接口;JDK动态代理的对象在程序运行前不存在,在程序运行时动态的在内存中构建;JDK动态代理灵活的进行业务功能的切换;本类中的方法(非接口中的方法)不能被代理;可以在代理中增强自己的功能代码
参数:它是使用工具类完成JDK的动态实现,反射包java.lang.reflect
![]() |
1)Proxy类:它是java.lang.reflect.Proxy包下的类,它有一个方法Proxy.newProxyInstance{....},专门用来生成动态代理对象
2)Method类:反射用的类,用来进行目标对象方法的反射调用,Method对象接住我们正在调用的方法
3)InvocationHandler接口:用来实现代理和业务功能的,我们在调用时使用匿名内部实现,我们自己写的
实现:
0、项目结构
1、创建接口,定义目标类要完成的功能
2、创建目标类的实现接口
3、创建InvocationHandler接口的实现类,在invoke方法中完成代理类的功能 1)调用目标方法 2)增强功能
4、使用Proxy类的静态方法,创建代理对象,并把返回值转为接口类型。
其实:动态代理相比静态代理,就是:把增强功能的代码自动的加到方法的前面或者后面,不用每个方法都写加增强功能的代码;但是静态代理只能一个方法一个方法的加增强功能的代码,尽管增强功能的代码都一样。 |
2、CGLib动态代理:
简述:简称为子类动态代理,通过动态的在内存中构建子类对象,重写父类的方法进行代理功能的增强。如果目标对象没有实现接口,则只能通过CGLib子类代理来进行功能增强。子类代理是对象字节码框架ASM来实现的;CGLib在MyBatis和Spring框架中都有使用
注意:被代理的类不能为final,因为是继承
边栏推荐
- C basic knowledge review (Part 4 of 4)
- "Analysis of 43 cases of MATLAB neural network": Chapter 30 design of combined classifier based on random forest idea - breast cancer diagnosis
- 19Mn6 German standard pressure vessel steel plate 19Mn6 Wugang fixed binding 19Mn6 chemical composition
- 串口转WIFI模块通信
- 明明设计的是高带宽,差点加工成开路?
- What is 1cr0.5mo (H) material? 1cr0.5mo (H) tensile yield strength
- Mavros sends a custom topic message to Px4
- [JS reverse] MD5 encryption parameter cracking
- CPU設計實戰-第四章實踐任務一簡單CPU參考設計調試
- Yolov5进阶之六目标追踪环境搭建
猜你喜欢
随机推荐
Leetcode t31: prochain arrangement
2022 ordinary scaffolder (special type of construction work) examination question bank and the latest analysis of ordinary scaffolder (special type of construction work)
5mo3 UHI HII HII 17mn4 19Mn6 executive standard
Intelligent water conservancy solution
yolov5训练可视化指标的含义
Yolov3, 4, 5 and 6 Summary of target detection
C语言指针的进阶(下)
SPL-介绍(一)
【无标题】
Yolov5 advanced 7 target tracking latest environment setup
毕业论文中word的使用1-代码域标公式
【华为机试真题详解】判断字符串子序列【2022 Q1 Q2 | 200分】
V79.01 Hongmeng kernel source code analysis (user mode locking) | how to use the fast lock futex (Part 1) | hundreds of blogs analyze the openharmony source code
【js逆向】md5加密参数破解
Screenshot tips
长安链同步节点配置与启动
Field agricultural irrigation system
Qt的模型与视图
Glitch Free时钟切换技术
华为机试真题专栏订阅指引
1、创建一个接口,定义卖商品的方法,表示你的厂家和商家做的事情。

















