静态代理和动态代理 ???

首先说下静态代理:

你要清楚 --- 代理解决的问题当两个类需要通信时,引入第三方代理类,将两个类的关系解耦

而静态代理是程序员自己定义代理类

我理解的代理类就是耦合类:它是新功能和老功能之间的粘合剂

下面是静态代理类的实现过程

1.写一个新功能类
2.写一个耦合类,实现老功能的接口
3.耦合类中实现老功能对象、实现新功能对象
4.重写老功能接口内的方法
5.在此方法内的前或者后 添加新业务功能

 

接下来,就是动态代理类了

有两种动态代理,一种是jdk自己提供的jdk动态代理,一种是需要导包实现的cglib动态代理

我们一个一个说,首先是jdk动态代理

总的来说动态代理实际上就是会自己生成耦合类

它里面也包含了两个元素构成:

其一是新功能类,和静态是一致的,都有实现老功能的接口,重写里面的方法;

其二是InvocationHandler的子实现类,InvocationHandler的子实现类会重新方法,此方法就是偶合新老功能的关键

最后在调用类中,根据jdk得到一个jdk底层生成的代理 (新功能) 对象

接着调用生成的耦合类即可

 

cglib和此类似,不做阐述了

 

posted @ 2019-09-30 17:55  某年某月某某人  阅读(85)  评论(0)    收藏  举报