WHWW之代理模式(4)-静态代理,jdk动态代理,cglib动态代理的区别

 What:什么是代理模式?

代理模式就是可以在不改变目标类的前提下,为目标类额外增加相应的功能。

How:怎么实现代理模式?

WHWW之代理模式(1)-静态代理

WHWW之代理模式(2)-动态代理

WHWW之代理模式(3)-cglib动态代理

why:为什么会存在多种代理方式呢?

因为需求是一个不断迭代的过程,在我们解决需求的同时,我们也会不断的对技术进行更新。我们知道了,静态代理要求目标类和代理类都必须实现同一个接口,扩展容易造成类的膨胀;知道了应用jdk动态代理前提是目标类基于统一的接口,代理方式使系统比较灵活;而cglib不能对final修饰的类进行代理。所以我们可以根据需求来采用相应的代理模式。

where:静态代理,jdk动态代理,cglib动态代理好和不好体现在哪里?

静态代理:对真实对象进行封装,不会修改目标类的代码。

不好:如果多个不同类型的目标对象需要代理时,就的建立多个代理类,造成类的膨胀,代码的冗余。编译期加入,系统不够灵活。

jdk动态代理:可以解决创建多个静态代理的麻烦,避免不断的重复多余的代理;是在程序运行时动态获取目标对象的,采用了反射,而反射机制在生成类的过程中比较高效的。

不好:系统灵活了,性能就低了,jdk动态代理效率比静态代理慢一点;且只能对实现了接口的类进行代理。

cglib动态代理:底层采用了asm来实现,asm在生成类的过程中比较高效,其实一般来说cglib效率比jdk动态代理高。可以对目标类生成一个资料,并覆盖其中方法实现增强。

不好:采用了继承机制,所有不能对fianl修饰的类进行代理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰太狼_cxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值