本文仅以笔记功能为主
一、代理模式
1、链接: Graphic Design Patterns.
2、链接: 菜鸟教程-代理模式.
3、《大话设计模式》
二、动态代理
代理模式分为两类:静态代理、动态代理。
动态代理的优点:
- 静态代理只针对某个特定的业务进行实现,接口中增加新的方法后,相应的实体类、代理类都要实现此方法,这会造成代码越来越复杂,而动态代理没有此问题。
- 在动态代理中,接口中声明的所有方法都被放到了调用处理器中一个集中的方法处理(InvocationHandler.invoke()),这样的话,在接口新增方法后,不必像静态代理那样全部实体类和代理类都实现一遍。
对于Java来说,动态代理的一个典型应用是:Spring AOP
Spring AOP的动态代理有两种实现方式,分别为:
- JDK
- CGLib
对这二种实现方法进行区别分析:
- JDK的动态代理机制只能代理实现了接口的类;CGLib是采用继承机制针对类来实现代理的,继承回调。
- CGLib不能对final修饰的类代理,因为final修饰的类不能被继承
- 在JDK1.8后,JDK效率高于CGLib。(可能是因为CGLib到底是第三方的)
1、百战Spring笔记
2、尚硅谷Spring笔记