代理模式简介
代理模式(Proxy Pattern)是结构型模式,这种模式为其他对象提供一种代理以控制对这个对象的访问,
为什么使用代理模式
- 重用: 为了某个功能或者类可重用性;
- 职责清晰: 保持原有的职责;
- 可靠性: 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,或者起到控制的作用;
组件
- 抽象主题(Subject): 声明真实对象和代理对象的共同接口,使用目标对象的地方都可以使用代理对象;
- 真实主题(RealSubject): 也称委托类,定义了代理对象所代表的真实实体
-
代理(Proxy): 也称委托类、代理类。代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后,执行某个操作,而不是单纯地将调用传递给目标对象
总结
一个代理类可以代理多个被委托者或被代理者,因此一个代理类具体代理哪个具体主题角色,是由场景类决定的。最简单的情况是一个主题类和一个代理类。通常情况下,一个接口只需要一个代理类,具体代理哪个实现类有高层模块决定。
代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后对返回结果的处理等。代理类本身并不真正实现服务,而是通过调用委托类的相关方法,来提供特定的服务。