代理模式
模式定义
代理模式是为目标对象创建代理对象以提供一种代理机制,让代理对象能控制目标对象的访问,并且可以在不改变目标对象的情况下为目标对象添加额外的功能
模式分类
静态代理
在程序编译期静态地为目标类创建代理类
动态代理
在程序运行期运用反射机制动态地为目标类创建代理类(Spring AOP 采用动态代理)
UML 类图
优缺点
优点
- 代理模式在客户对象和目标对象之间起到一个中介作用和保护目标对象的作用
- 代理对象可以扩展目标对象的功能
- 代理模式能将客户对象与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性
缺点
- 代理模式会造成系统设计中的类数量增加
- 在客户对象和目标对象之间增加一个代理对象,会造成请求处理速度变慢
- 在一定程度增加了系统的复杂度
使用场景
远程代理
为一个位于不同网络计算机的对象提供一个本地的代理(如本地网盘)
虚拟代理
如果需要创建一个消耗较大的对象,先创建一个消耗较小的对象来表示,真实对象只在需要时才被真实创建(如图片显示)
安全代理
用来控制不同种类客户对真实对象的访问权限
智能指引
主要用于调用目标对象时,代理附加一些额外的处理功能(如GC垃圾回收)
延迟加载
为了提高系统的性能,延迟对目标对象的加载(如MyBatis 的延时加载)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现