定义
代理模式,为其他对象提供一种代理以控制对这个对象的访问。[DP]
代理模式是结构型模式之一。
UML类图
-
Subject 类,定义了 Proxy 和 RealSubject 的共用接口,这样在任何使用 RealSubject 的地方都可以使用 Proxy 代替了。
-
Proxy 类,保存一个引用使得代理可以访问实体,并提供一个与 Subject 的接口相同的接口,这样代理就可以用来代替实体。
通过持有 RealSubject 的引用,不但可以控制 RealSubject 的创建和删除,还可以在 RealSubject 被调用前进行拦截,或调用后进行某些其它操作。
-
RealSubject 类,定义 Proxy 所代表的的真实实体。
应用场景
代理模式其实就是在访问对象时引入了一定程度的间接性,因为这种间接性,可以附加多种用途。
1. 远程代理
为一个对象在不同的地址空间提供局部代表。
这样可以隐藏一个对象存在于不同地址空间的事实。
2. 虚拟代理
根据需要创建开销很大的对象。
通过它来存放实例化需要很长时间的真实对象,以达到性能的最优化。
3. 保护代理
用来控制真实对象访问控制时的权限,一般用于对象应该有不同的访问权限的时候。
4. 智能指引
当调用真实的对象时,代理处理另外一些事。