代理模式的作用
- 当一个对象需要受到保护的时候,可以考虑使用代理对象完成某个行为
- 需要给某个对象进行功能增强的时候,可以考虑找一个代理进行增强
- 在程序中,对象 A 和对象 B 无法直接交互时
代理模式三大角色
- 目标对象
- 代理对象
- 目标对象和代理对象的公共接口
代理模式代码实现形式
- 静态代理 会造成类爆炸的问题
- 动态代理
- 动态代理模式还是代理模式,只不过添加了字节码生成技术,可以在内存中为我们生成 class 字节码, 这个字节码就是代理类,在内存中动态的生成字节码代理的技术
- 解决代理类的数量
- 解决代码复用
实现动态代理的方式
- JDK 动态代理:只能代理接口
- CGLIB 动态代理:既可以代理接口,又可以代理类(底层有个小而快的字节码处理框架 ASM)
- javassist 动态代理
扩展
类和类之间的关系
- 继承(耦合度较高)
- 关联(耦合度较低)
- 实现
- 依赖
- 组合
- 聚合