动态代理:
作用: 在不改变源码的基础上,对已有方法增强 (它是AOP思想的实现技术)
它与装饰者模式有点相似,但它比装饰者模式更灵活
分类(2种):
一、基于接口的动态代理
-
要求:被代理类最少实现一个接口
-
提供:JDK官方
-
涉及的类:Proxy
-
创建代理对象的方法:
Proxy.newProxyInstance(ClassLoader,Class[],InvocationHandler )
[参数的含义介绍]
①:ClassLoader:类加载器,它是用来加载类的,把.class文件加载到内存.形成Class对象
一般都是固定方法:XXX.getCLass().getClassLoader();
②:Class[]:字节码数组,被代理类实现的接口们
一般也是固定方法:XXX.getClass().getInterface();
③:Invocationhandler:它是一个接口,就是用于我们提供增强代码的
我们一般都是写一个该接口的实现类,实现类可以是匿名内部类
new InvocationHandler(){
public Object invoke(...)
}