动态代理 是实现对方法的增强却不对源码进行修改
相对于静态代理来说 不用生成很多的class文件-----而是通过运行时生成字节码 加载到jvm中
今天说的是JDK动态代理 关键在于实现InvocationHandler接口
我先简单说一下 如何实现
举例: 首先创建销售类接口 ----->接口实现类
要想 让销售类接口的方法 实现增强 而不改变实现类 (对接口进行代理,生成代理类,实现该接口)
1.得到代理类对象 Proxy.newProxyInstance(三个参数);
参数1 是应用类加载器
参数2 是被代理的接口数组
(可以是获取被代理类接口的new Class[]方法)也可以是被代理类获取类对象获取接口的方法
参数3 是处理器对象 用来对方法进行增强
2.对处理器对象 进行处理 new InvocationHandler(){invoke方法};
3.最后调用代理对象 执行方法 (相当于执行invocationHandler的invoke方法) 实现增强效果