静态代理
角色分析:
- 抽象角色:一般使用接口或者抽象类来解决
- 真实角色:被代理的角色
- 代理角色:代理真实的角色,代理真实角色之后,通常会增加一些附属操作
- 客户:访问代理角色的人
代理模式的好处:
- 可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
- 公共的业务交给代理角色!实现了业务的分工
- 公共业务发生拓展的时候,方便集中管理
缺点:
- 一个真实角色就会产生一个代理角色(1、代码量会翻倍;2、开发效率会变低)
动态代理
- 动态代理和静态代理角色一样
- 动态代理的代理类是动态生成的,不是我们直接写好的
- 动态代理分为两大类:基于接口的动态代理,基于类的动态代理
- 基于接口----JDK动态代理
- 基于类----cglib
- java字节码实现:javasist
需要了解两个类:Proxy:代理。lnvocationHandler:调用处理程序
动态代理的好处:
- 可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
- 公共的业务交给代理角色!实现了业务的分工
- 公共业务发生拓展的时候,方便集中管理
- 一个动态代理类代理的是一个接口,一般就是对应一类的业务
- 一个动态代理类可以代理多个类,只要是实现了同一个接口即可