代理模式

JDK动态代理的实现原理

1.拿到被代理类的引用,并且获取他得所有的接口(反射获取)

2.JDK Proxy类重新生成一个新的类,实现被代理类的所有方法

3.动态生成java代码,把增强逻辑加入到新生成的代码中,

4.编译生成新的java代码的 class文件

5.加载并重新运行新的class,得到类就是全新类

JDK动态代理和cglib动态代理区别

 

1.jdk实现了被代理对象的接口,Cglib是继承了被代理对象

2.jdk和cglib都是在运行期生成字节码,JDK是直接写class字节码,CGLib使用ASM框架写Class字节码

cglib代理实现更复杂,生成代理类比JDK代理低

3.JDK调用代理方法,是通过反射机制去调用,CGLib是通过fastClass机制直接调用方法,CGLib执行效率更高

坑:

cglib不能代理final的方法

代理模式的优点:

代理模式能将代理对象与真实被调用的目标对象进行分离

一定程度上降低了系统的耦合度,易于拓展

代理可以起到保护目标对象的作用

增强目标对象的职责

代理模式缺点

代理模式会造成系统设计中类的数目增加
客户端和目标对象之间增加了一个代理对象,会造成请求处理速度变慢

增加了系统的复杂度

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值