Proxy

代理模式

Posted by Max on September 11, 2018

定义

代理模式,为其他对象提供一种代理以控制对这个对象的访问。[DP]

代理模式是结构型模式之一。

UML类图

proxypattern

  • Subject 类,定义了 Proxy 和 RealSubject 的共用接口,这样在任何使用 RealSubject 的地方都可以使用 Proxy 代替了。

  • Proxy 类,保存一个引用使得代理可以访问实体,并提供一个与 Subject 的接口相同的接口,这样代理就可以用来代替实体。

    通过持有 RealSubject 的引用,不但可以控制 RealSubject 的创建和删除,还可以在 RealSubject 被调用前进行拦截,或调用后进行某些其它操作。

  • RealSubject 类,定义 Proxy 所代表的的真实实体。

应用场景

代理模式其实就是在访问对象时引入了一定程度的间接性,因为这种间接性,可以附加多种用途。

1. 远程代理

为一个对象在不同的地址空间提供局部代表。

这样可以隐藏一个对象存在于不同地址空间的事实。

2. 虚拟代理

根据需要创建开销很大的对象。

通过它来存放实例化需要很长时间的真实对象,以达到性能的最优化。

3. 保护代理

用来控制真实对象访问控制时的权限,一般用于对象应该有不同的访问权限的时候。

4. 智能指引

当调用真实的对象时,代理处理另外一些事。