- 代理模式
模式定义:为其他对象提供一种代理,以实现控制对这个对象的访问,代理对象在客户端和目标对象之间起到中介作用。属于结构型设计模式。
分为:静态代理 (显示的声明被代理对象,对对象有限制,不符合开闭原则,对象变化了代理类也要变化),动态代理模式(对对象没有限制)
目的:保护对象 , 增强对象
JDK是采用读取接口的信息(对应用户而言必须有一个接口实现(接口数小于65535),目标类相对较复杂,生成的代理逻辑简单,执行效率相对较低,每次反射动态调用)
CGLib时通过覆盖父类方法(可以代理任何一个类,没有任何要求,生成的代码逻辑更复杂,效率低,但调用效率更高,生成了一个包含所有逻辑的的FastClass,不再需要反射调用)
CGLib有个坑,不能代理final的方法。
目的:都是生成一个新的类,去实现增强代码逻辑的功能。