一,什么是代理模式
通过代理对象访问目标对象,这样可以在目标对象继承上增强额外的功能
二,静态代理模式
角色分析
抽象角色:一般会使用接口和抽象类解决
真实角色:被代理角色
代理角色:代理真实角色的角色,代理真实角色后,我们一般会做一些附属操作
客户:访问代理对象的人
代码步骤:以租房为例子做代码分析
1.接口
2.需增强的角色
3.代理角色
4.//客户
5.静态代理模式的好处
可以使得真实角色操作更加纯粹!不用去关注一些公共的业务
共也就就交给代理角色!集中了业务的分工
公共业务发送扩展时,方便集中管理
6.静态代理模式缺点
一个真实角色也就会产生一个代理角色;代码量就会翻倍-开发效率会大大降低
三,动态代理模式
动态代理和静态代理一样的逻辑基本类似的,区别在于动态代理是根据目标对象进行动态生成代理对象
动态代理分为两大类:基于接口动态代理,基于类得到动态代理
动态代理使用必须的两个类
•Proxy(代理):为某个接口创建代理类
•InvocationHandler:是由代理实例的调用处理程序接口。每个代理实例都有一个关联的调用处理程序。当在代理实例上调用方法时,方法调用被编码并分派到其调用处理程序的invoke方法
生成动态代理的类
客户端访问
动态代理的好处:
可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
公共也就交给代理角色!实现了业务的分工
公共业务发送扩展的时候,方便集中管理
一个动态代理类代理的是一个接口,一般就是对应的一类业务
个动态代理类可以代理多个类,只要实现了一个接口即可