当前位置:网站首页>动态代理
动态代理
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,因为是继承
边栏推荐
- Configuration and startup of Chang'an chain synchronization node
- Brief introduction to AES
- The meaning of yolov5 training visualization index
- The use of word in graduation thesis
- [untitled]
- Internet of things technology is widely used to promote intelligent water automation management
- R语言入门
- shardingSphere
- Provincial election + noi part I dynamic planning DP
- 你了解数据是如何存储的吗?(C整型和浮点型两类)
猜你喜欢

C语言指针的进阶(上篇)

截图小妙招

The use of word in graduation thesis

1.jetson与摄像头的对接

Intelligent water supply system solution

Qt的模型与视图

3、Modbus通讯协议详解
![[detailed explanation of Huawei machine test] judgment string subsequence [2022 Q1 Q2 | 200 points]](/img/0f/972cde8c749e7b53159c9d9975c9f5.png)
[detailed explanation of Huawei machine test] judgment string subsequence [2022 Q1 Q2 | 200 points]

《微机原理》-绪论

What is the material of 16MnDR, the minimum service temperature of 16MnDR, and the chemical composition of 16MnDR
随机推荐
《微机原理》——微处理器内部及外部结构
Intelligent constant pressure irrigation system
Foundation: 3 Opencv getting started images and videos
明明设计的是高带宽,差点加工成开路?
Audio-AudioRecord create(一)
The era of low threshold programmers is gone forever behind the sharp increase in the number of school recruitment for Internet companies
SPL-安装与基本使用(二)
Matlab tips (16) consistency verification of matrix eigenvector eigenvalue solution -- analytic hierarchy process
深度学习训练样本扩增同时修改标签名称
Yolov5 advanced 7 target tracking latest environment setup
Leetcode T29: 两数相除
2022 mechanical fitter (primary) examination summary and mechanical fitter (primary) reexamination examination
Leetcode t31: prochain arrangement
Leetcode T34: 在排序数组中查找元素的第一个和最后一个位置
1.jetson与摄像头的对接
Advanced API
leetcode T31:下一排列
What is the material of 16MnDR, the minimum service temperature of 16MnDR, and the chemical composition of 16MnDR
Only in China! Alicloud container service enters the Forrester leader quadrant
Yolov3, 4, 5 and 6 Summary of target detection
1、创建一个接口,定义卖商品的方法,表示你的厂家和商家做的事情。







