代理模式主要用于通过提供代理对象来控制对实际对象的访问。比如在C/S场景中应用代理模式的时候,客户端的请求首先会发送给服务端代理,服务端代理对象会对客户端的请求进行简单的过滤,对于无效的请求就会直接返回,而不用发送给服务端,而对于有效的请求则会发送给服务端进行处理。
代理模式适用于控制访问那些不想暴露接口和数据给外部的业务对象 或者不方便被其他对象直接引用的业务对象,这些业务对象只需要通过代理对象作为中介和外部的对象进行交互。
代理对象和实际对象具有相同的接口,在实际的应用场景中它能代替实际对象的功能。
代理模式中主要有三种角色:抽象功能,代理对象,实际对象
抽象功能代表着实际对象所拥有的功能,代理对象和实际对象都会实现抽象功能
代理对象是用来代理实际对象的,他会持有一个实际对象的引用,并且实现和实际对象相同的抽象功能。
实际对象就是我们需要控制访问的对象,它实现了抽象功能。它让代理对象来代表它处理和外部对象的交互
我以手机厂商销售手机来说明代理模式,手机厂商销售手机的时候会寻找代理商,这些代理商帮助手机厂商销售。那么手机厂商就是代理模式中的实际对象,手机厂商的代理商就是代理对象,销售手机的行为就是抽象功能,这三个角色的关系如下图所示