当前位置:网站首页>动态代理
动态代理
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,因为是继承
边栏推荐
- 2022 mechanical fitter (primary) examination summary and mechanical fitter (primary) reexamination examination
- 《单片机原理及应用》-片外拓展
- Leetcode t40: combined sum II
- What is the material of 16mo3 steel plate? What is the difference between 16mo3 and Q345R?
- Qt的模型与视图
- Principle and application of single chip microcomputer - principle of parallel IO port
- 我想知道手机注册股票开户的流程?另外,手机开户安全么?
- Vscode customize the color of each area
- 《微机原理》——微处理器内部及外部结构
- 公网集群对讲+GPS可视追踪|助力物流行业智能化管理调度
猜你喜欢
随机推荐
Centos7 shell脚本一键安装jdk、mongo、kafka、ftp、postgresql、postgis、pgrouting
R语言入门
DID的使用指南,原理
[no title] free test questions for constructor municipal direction general foundation (constructor) and theoretical test for constructor municipal direction general foundation (constructor) in 2022
Principle and application of single chip microcomputer - off chip development
Download jackson codehaus. org jar - downloading jackson. codehaus. org jar
Guidelines and principles of did
Agrometeorological environment monitoring system
Qt的模型与视图
Leetcode T40: 组合总和II
There are many problems in sewage treatment, and the automatic control system of pump station is solved in this way
《微机原理》——微处理器内部及外部结构
Leetcode t39: combined sum
Manually dig XSS vulnerabilities
Advanced level of C language pointer (Part 1)
Audio-AudioRecord create(一)
Intelligent water conservancy solution
"Analysis of 43 cases of MATLAB neural network": Chapter 30 design of combined classifier based on random forest idea - breast cancer diagnosis
你了解数据是如何存储的吗?(C整型和浮点型两类)
Screenshot tips
1、创建一个接口,定义卖商品的方法,表示你的厂家和商家做的事情。

















