代理模式(Proxy)
First Post:
Last Update:
Last Update:
代理模式(Proxy)
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。
代理模式结构图

代理模式代码结构
1 | |
代理模式主要解决的问题
在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
代理模式应用场合
远程代理=>也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
(275条消息)代理模式(三):远程代理,虚拟代理,缓冲代理_SunnyMarkLiu的博客-CSDN博客
虚拟代理=>是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。例如(浏览器打开一个html网页,图片框代理了尚未下载的图片)
安全代理=>用来控制真实对象访问时的权限。一般用于对象应该有不同访问权限的时候。
智能代理=>是指当调用实际要使用的对象时,代理处理一些额外的事情。
例如:
- 计算真实对象的引用次数,当该对象没有引用时,可以自动释放它;
- 当第一次引用一个持久化对象时,将它装入内存;
- 在访问一个实际对象前,检查是否已经锁定它,以确保其他对象不能改变它。
这样,就可以通过代理模式来为对象的调用提供额外的业务逻辑。
总的来说:代理模式就是在访问对象的时候引入一定程度的间接性,因为这种间接性,可以附加多种用途。(逻辑增强,控制调用)说白了,代理就是真实对象的代表。
使用代理模式的优点
- 职责清晰
真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。 - 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。
- 高扩展性