proxy代理模式

      proxy代理模式,其意图是"为其他对象提供一种代理以控制对这个对象的访问",通俗的讲就是,一个类A请一个代言人C去跟另一个类B打交道。在"四人帮"的《设计模式》中代理一章有关代理的"动机"的那节,举文档编辑器加载图像为例,说得很形象、透彻。

      根据不同的用途,proxy代理模式又可以分为:远程代理、虚代理、访问控制(保护)代理、引用代理、审计代理、同步化代理、copy-on-write代理、缓存代理。
      远程代理:提供访问远程对象的途径(RMI的应用)。
      虚代理:由于创建目标对象的内存资源开销很大,延迟对该资源的访问,只有在用到的时候才被创建出来。
      访问控制代理:控制对原始对象的访问。通过设置不同的允许策略,控制不同客户对代理的特定部分的访问控制,保证对象应该有不同的访问权限。
      引用代理:维护一个对目标对象的引用计数,只有当没有客户在使用目标对象时才去删除它。
      审计代理:在执行目标对象的一个方法之前或者之后做一些审计的行为。也就是AOP编程。
      同步化代理:防止若干个客户对象对目标对象的并行访问,在真正访问之前检查目标对象是否被锁定。类似于数据库的事务锁。
      copy-on-write代理:类似于virtual proxy虚代理,把拷贝延迟到只有客户需要时,才真正采取行动。在《设计模式》中描述得很清楚:"拷贝一个庞大而复杂的对象是一种开销很大的操作,如果这个拷贝根本没有被修改,那么这些开销就没有必要。用copy-on-write代理可以延迟这一过程,可以保证只有当这个对象被修改时才对它进行拷贝。在实现copy-on-write代理是必须对实体进行引用计数。拷贝代理会增加引用计数。只有当用户请求一个修改该实体的操作时,代理才会真正的拷贝它,在这种情况下,代理还必须减少实体的引用计数。当引用的数目为零时,这个实体将被删除。"。
      缓存代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户可以共享这些结果,而不必去访问实际对象,可以获得一个更快的响应时间。类似于flyweight享元模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值