设计模式之代理模式解析(下)

4)远程代理介绍

远程代理(Remote Proxy) 使客户端程序可以访问在远程主机上的对象,远程代理对象承担了大部分的网络通信工作,并负责对远程业务方法的调用。

5)虚拟代理介绍
1.概述

虚拟代理(Virtual Proxy) 对于一些占用系统资源较多或者加载时间较长的对象,可以给这些对象提供一个虚拟代理,在真实对象创建成功之前虚拟代理扮演真实对象的替身,而当真实对象创建之后,虚拟代理将用户的请求转发给真实对象。

2.使用场景
  • 由于对象本身的复杂性或者网络等原因导致一个对象加载的时间较长,此时可以用一个加载时间相对较短的代理对象来代表真实对象,在实现时可以结合多线程技术,一个线程用于显示代理对象,其他线程用于加载真实对象。
  • 当一个对象的加载十分耗费系统资源时,虚拟代理可以让占用大量内存或处理起来非常复杂的对象推迟到使用它们的时候才创建,而在此之前用一个相对占用资源较少的代理对象来代表真实对象,再通过代理对象来引用真实对象,为了节省内存,在第一次引用真实对象时再创建对象,并且该对象可被多次重用,在以后每次访问时需要检测所需对象是否已经被创建,这需要消耗一定的系统时间,但是可以节省内存空间。
6)缓冲代理介绍

缓冲代理(Cache Proxy) 为某一个操作的结果提供临时的缓存存储空间,以便在后续使用中能够共享这些结果,从而避免某些方法的重复执行,优化系统性能。

7)总结
1.优点
  • 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。

  • 客户端可以针对抽象主题角色进行编程,增加和更换代理类无须修改源代码,符合开闭原则。

  • 远程代理为位于两个不同地址空间对象的访问提供了一种实现机制,可以将消耗资源较多的对象和操作移到性能更好的机器上,提高系统的整体运行效率。

  • 虚拟代理通过一个消耗资源较少的对象来代表一个消耗资源较多的对象,可以在一定程度上节省系统的运行开销。

  • 缓冲代理为某一个操作的结果提供临时的缓存存储空间,以便在后续使用中能够共享这些结果,优化系统性能。

  • 保护代理可以控制对一个对象的访问权限,为不同用户提供不同级别的使用权限。

2.缺点
  • 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢,例如保护代理。

  • 实现代理模式需要额外的工作,而且有些代理模式的实现过程较为复杂,例如远程代理。

3.适用场景
  • 当客户端对象需要访问远程主机中的对象时可以使用远程代理。

  • 当需要用一个消耗资源较少的对象来代表一个消耗资源较多的对象时可以使用虚拟代理。

  • 当需要为某一个被频繁访问的操作结果提供一个临时存储空间,以供多个客户端共享访问这些结果时可以使用缓冲代理。

  • 当需要控制对一个对象的访问,为不同用户提供不同级别的访问权限时可以使用保护代理。

  • 当需要为一个对象的访问(引用)提供一些额外的操作时可以使用智能引用代理。

相关推荐
苏渡苇2 小时前
优雅应对异常,从“try-catch堆砌”到“设计驱动”
java·后端·设计模式·学习方法·责任链模式
短剑重铸之日3 小时前
《设计模式》第十一篇:总结
java·后端·设计模式·总结
feasibility.4 小时前
AI 编程助手进阶指南:从 Claude Code 到 OpenCode 的工程化经验总结
人工智能·经验分享·设计模式·自动化·agi·skills·opencode
BD_Marathon4 小时前
七大设计原则介绍
设计模式
YigAin7 小时前
Unity23种设计模式之 享元模式
设计模式·享元模式
范纹杉想快点毕业20 小时前
实战级ZYNQ中断状态机FIFO设计
java·开发语言·驱动开发·设计模式·架构·mfc
茂桑1 天前
DDD领域驱动设计-基础设施层
设计模式·架构
小温冲冲1 天前
通俗且全面精讲工厂设计模式
设计模式
进击的小头1 天前
设计模式与C语言高级特性的结合
c语言·设计模式
小温冲冲1 天前
通俗且全面精讲单例设计模式
开发语言·javascript·设计模式