标签:invoke 开发 loader objects handler 类加载器 alt ati tcl
一:什么是动态代理?为什么要用动态代理?
在开发中,有时候会发现先前写好的类中的某个方法的原有功能不够用,需要增加额外功能。但是修改源代码增加功能是开发大忌,不到万不得已时不能这样做,这时候就需要动态代理来帮忙了。
动态代理就是设计模式中的代理模式
二:动态代理概念:
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:代理对象调用的方法时,传递的实际参数
标签:invoke 开发 loader objects handler 类加载器 alt ati tcl
原文地址:https://www.cnblogs.com/lihui001/p/12291573.html