java设计模式之代理模式

1、代理模的功能:

              代理模式是通过创建一个代理对象,用这个代理对象去代表真实的对象,客户端得到这个代理对象后,对客户端并没有什么影响,就跟得到了真实对象一样来使用。

             当客户端操作这个代理对象的时候,实际上功能最终还是会由真实的对象来完成,只不过是通过代理操作的,也就是客户端操作代理,代理操作真正的对象。

            正是因为有代理对象夹在客户端和被代理 的真实对象中间,相当于一个中转,那么在中转的时候 就有很多花招可以玩,比如判断一下权限,如果没有足够的权限,那么就不给你了中转了,等等。

2、代理的分类:

            事实上代理又被分成多种,大致有如下一些。

  • 虚代理:根据需要来创建开销很大的对象,该对象只有在需要的时候才会被真正的创建。
  • 远程代理:用来在不同的地址空间代表同一个对象,这个不同的地址空间可以是在本机,也可以在其他机器上。在Java里面最典型的就是RMI技术。
  • copy-on-write代理:在客户端操作的时候,只有对象确实改变了,才会真的拷贝(克隆)一个目标对象,算是虚代理的一个分支。
  • 保护代理:控制对原始对象的访问,如果有需要,可以给不同的用户提供不同的访问权限,以控制他们对原始对象的访问。
  • Cache代理(缓存代理):为那些昂贵操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
  • 防火墙代理:保护对象不被恶意用户访问和操作。
  • 同步代理:使多个用户能够同时访问目标对象而没有冲突。
  • 智能指引:在访问对象时执行一些附加操作,比如,对指向实际对象的引用计数、第一次引用一个持久化对象时,将它装入内存等。

3、代理模式的本质:

            控制对象访问。


4、代理模式调用顺序示意图:



5、何时选代理模式

        建议在如下情况选用代理模式。

  • 需要为一个对象在不同的地址空间提供局部代表的时候,可以使用远程代理。
  • 需要安装需要创建开销很大的对象的时候,可以使用虚代理。
  • 需要控制对原始对象的访问的时候,可以使用保护代理。
  • 需要在访问对象执行一些附加操作的时候,可以使用智能引入代理。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成伟平2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值