代理设计模式分类
代理设计模式的优点:
1.保护真实对象
2.让真实对象职责更明确
3.实现了功能扩展
主要组件:
真实对象
代理对象
抽象对象(抽象功能)
-
静态代理
- 由代理对象代理所有真实对象功能
1.1 自己编写代理类
1.2 每个代理的功能需要单独编写 - 缺点:代理功能较多时,代理类中方法需要写很多
- 由代理对象代理所有真实对象功能
-
动态代理
1.为了解决静态代理频繁编写代理功能缺点
2. 分类:
2.1 JDK动态代理
1.和cjlib动态代理比较:
------------------1.1 优点:jdk自带,不需导入jar
------------------1.2 缺点:
------------------------1.2.1 真实对象必须实现接口
------------------------1.2.2 利用反射,效率不高
2.特点:
代理类必须实现的接口 : InvocationHandler ,然后重写invoke 方法。
2.2 cglib动态代理
- 基于字节码,生成真实对象的子类
- 运行效率高于JDK动态代理。JDK动态代理是基于反射的。