#yyds干货盘点# 设计模式之静态代理,jdk动态代理,cglib动态代理的区别jdk静态代理和动态代理
设计模式之静态代理,jdk动态代理,cglib动态代理的区别
1.简述:
代理模式就是可以在不改变目标类的前提下,为目标类额外增加相应的功能。
因为需求是一个不断迭代的过程,在我们解决需求的同时,我们也会不断的对技术进行更新。我们知道了,静态代理要求目标类和代理类都必须实现同一个接口,扩展容易造成类的膨胀;知道了应用jdk动态代理前提是目标类基于统一的接口,代理方式使系统比较灵活;而cglib不能对final修饰的类进行代理。所以我们可以根据需求来采用相应的代理模式。
2.主要区别:
静态代理:对真实对象进行封装,不会修改目标类的代码。
不好:如果多个不同类型的目标对象需要代理时,就的建立多个代理类,造成类的膨胀,代码的冗余。编译期加入,系统不够灵活。
jdk动态代理:可以解决创建多个静态代理的麻烦,避免不断的重复多余的代理;是在程序运行时动态获取目标对象的,采用了反射,而反射机制在生成类的过程中比较高效的。
不好:系统灵活了,性能就低了,jdk动态代理效率比静态代理慢一点;且只能对实现了接口的类进行代理。
cglib动态代理:底层采用了asm来实现,asm在生成类的过程中比较高效,其实一般来说cglib效率比jdk动态代理高。可以对目标类生成一个资料,并覆盖其中方法实现增强。
不好:采用了继承机制,所有不能对fianl修饰的类进行代理。
代理模式之静态代理,JDK动态代理和cglib动态代理jdk cglib动态代理
#yyds干货盘点# 设计模式之代理模式:动态代理动态代理模式
#yyds干货盘点# 设计模式之代理模式:静态代理代理模式实例
静态代理,JDK动态代理,Cglib动态代理详解jdk动态代理
谁与争锋,JDK动态代理大战CGLib动态代理jdk动态代理和cglib动态代理
Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理jdk静态代理和动态代理
动态代理:JDK动态代理和CGLIB代理的区别cglib代理和jdk动态代理区别
JDK动态代理和CGLib动态代理的对比cglib代理和jdk动态代理区别