在java中代理模式的作用:
1.一个对象需要受到保护的时候,可以考虑使用代理对象取完成某个行为.
2.需要给某个对象的功能进行功能增强的时候,可以考虑找一个代理进行增强
3.A对象无法和B对象无法直接沟通,也可以使用代理模式解决
代理模式有三大角色:
第一个角色:目标对象(演员)
第二个角色:代理对象(替身演员)
第三个角色:目标对象和代理对象的公共接口(演员和替身演员应该具有相同的行为动作)
如果使用代理模式的话,对于客户端程序来说,客户端是无法察觉到的,客户端在使用代理对象的时候就像在使用目标对象
如果要维护之前的代码,可以采用代理模式,将之前写好的类作为属性写到新生成的类,用接口来接,这样耦合度低
就像运行在目标对象一样
目前使用的是静态代理,每个接口都需要代理类,不好维护,可以使用动态代理
proxy意为代理
使用JDK动态代理技术:调用Proxy.newProxyInstance(类加载器,代理类要实现的接口,调用处理器)
第三个参数传一个类,编写的是增强代码,需要实现InvocationHandler
当代理对象调用代理方法的时候,注册在InvocationHandler调用处理器当中的invoke()方法被调用
此时完成的增强,还没有调用目标对象的目标方法
调用method.invoke(目标对象,参数),目标参数通过构造方法传入
如果有返回值的话,记得继续往上返回
CGLiB简介: