动态代理
Posted lihui001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态代理相关的知识,希望对你有一定的参考价值。
一:什么是动态代理?为什么要用动态代理?
在开发中,有时候会发现先前写好的类中的某个方法的原有功能不够用,需要增加额外功能。但是修改源代码增加功能是开发大忌,不到万不得已时不能这样做,这时候就需要动态代理来帮忙了。
动态代理就是设计模式中的代理模式
二:动态代理概念:
1. 真实对象:被代理的对象
2. 代理对象:对真实对象的功能(方法)进行
3. 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
三:实现步骤:
1. 代理对象和真实对象实现相同的接口
2. 代理对象 = Proxy.newProxyInstance();
3. 增强方法
4. 使用代理对象调用方法。
四:代码实现:
需求:computer对象里有个sell方法,里面实现了卖电脑的原始功能,现在想在sell方法里增加打八折的功能
1. Proxy.newProxyInstance方法的三个参数:
1. 类加载器:真实对象.getClass().getClassLoader()
2. 接口数组:真实对象.getClass().getInterfaces()
3. 处理器:new InvocationHandler()
2. InvocationHandler类的invoke的三个参数
1. o:代理对象
2. method:代理对象调用的方法,被封装为的对象
3. objects:代理对象调用的方法时,传递的实际参数
以上是关于动态代理的主要内容,如果未能解决你的问题,请参考以下文章
设计模式 结构型模式 -- 代理模式(动态代理(JDK动态代理(JDK动态代理要求必须定义接口,对接口进行代理。)动态代理原理(使用arthas-boot.jar查看代理类的结构)动态代理的作用)(代