静态代理和动态代理 ???
首先说下静态代理:
你要清楚 --- 代理解决的问题当两个类需要通信时,引入第三方代理类,将两个类的关系解耦
而静态代理是程序员自己定义代理类
我理解的代理类就是耦合类:它是新功能和老功能之间的粘合剂
下面是静态代理类的实现过程
1.写一个新功能类
2.写一个耦合类,实现老功能的接口
3.耦合类中实现老功能对象、实现新功能对象
4.重写老功能接口内的方法
5.在此方法内的前或者后 添加新业务功能
接下来,就是动态代理类了
有两种动态代理,一种是jdk自己提供的jdk动态代理,一种是需要导包实现的cglib动态代理
我们一个一个说,首先是jdk动态代理
总的来说动态代理实际上就是会自己生成耦合类
它里面也包含了两个元素构成:
其一是新功能类,和静态是一致的,都有实现老功能的接口,重写里面的方法;
其二是InvocationHandler的子实现类,InvocationHandler的子实现类会重新方法,此方法就是偶合新老功能的关键
最后在调用类中,根据jdk得到一个jdk底层生成的代理 (新功能) 对象
接着调用生成的耦合类即可
cglib和此类似,不做阐述了

浙公网安备 33010602011771号