代理模式的应用之虚代理实现大对象的延时加载

本文介绍了代理模式中的虚代理,用于延迟创建大对象以提高程序性能。通过实例展示了如何在打开大文件(如大型图片)时,先显示缩略图,需要时才加载完整图片。此外,还提到了其他类型的代理,如保护代理、Copy-on-write代理、远程代理等,以及代理模式带来的职责清晰和可扩展性的优点。最后,提出了适用于使用代理模式的场景。
摘要由CSDN通过智能技术生成
代理模式的分类

(1)虚代理可以根据需要来创建“大”对象,只有到必须创建对象的时候,虚代理才会去创建对象,从而大大加快程序运行速度,并节省资源。通过虚代理可以对系统进行优化。如开发一个大文档查看软件(如图片100MB),在打开文件前,先显示缩略图,而不是将所有图片都显示出来,在需要查看图片时,再用Proxy来进行大图片的打开)

(2)保护代理:可以在访问一个对象的前后,执行很多附加的操作,除了进行权限控制之外,还可以进行很多跟业务相关的处理,而不需要修改被代理的对象。也就是说,可以通过代理来给目标对象增加功能。

(3)Copy-on-write代理:也是虚代理的一个分支,在客户端操作的时候,只有对象确实改变了,才会真的拷贝(或克隆)一个目标的对象。在实现Copy-on-write时必须对目标对象进行引用计数。代理仅会增加引用。只有当用户请求一个修改目标对象的操作时,代理才会真正的拷贝它。在这种情况下,代理还必须减少目标对象的引用次数。当引用计数为0时,将目标对象删除。

(4)远程代理:隐藏了一个对象存在于不同地址空间的事实,也即是客户通过远程代理去访问一个对象,根本就不关心这个对象在哪里,也不关心如何通过网络去访问到这个对象,从客户的角度来看,它只是在使用代理对象而己。

(5)智能指针:和保护代理类似,也是允许在访问一个对象的前后,执行很多附加的操作,这样一来就可以做很多额外的事情,比如引用计数、第1次引用一个持久对象时,将它载入内存、在访问一个实际对象前,检查是否己经锁定了它,以确保其他对象不能改变它等。

(6)Cache代理:为那些昂贵操作的结果提供临时的存储空间,以便多个客户端可以共享这些结构。

(7)防火墙代理:保护对象不被恶意用户访问或操作。

(8)同步代理:使多个用户能够同时访问目标对象而没有冲突。

代理的优点

(1)职责清晰:RealSubject就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成其他事务,附带的结果就是编程简洁清晰。

(2)可扩展性好:RealSubject可以随时变化,只要它实现了接口,甭管如何变化,代理可以在完全不做任何修改的情况下使用。

代理的使用场景

(1)需要为一个对象在不同的地址空间提供局部代表的时候,可以使用远程代理

(2)需要按照需要创建开销很大的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值