简介
代理模式提供了另外一种访问目标对象的方式:通过代理对象访问目标对象。通过这种方式,可以扩展目标对象的功能。
角色
- 抽象主题角色
为所有具体主题角色和代理角色定义公共接口 - 具体主题角色
继承或实现抽象主题角色。具体主题对象是被代理的对象 - 代理角色
继承或实现抽象主题角色。代理对象提供与主题对象相同的接口,因此代理对象可以用来代替主题对象。代理对象需要保存具体主题对象的引用,并可以控制具体主题对象的创建和删除
静态代理
代理类是在运行前编写好的
动态代理
代理类是在运行时动态生成的,Java 动态代理有三种实现方式:
- JDK 动态代理
- CGLib 动态代理
- javasist
UML 类图