大战设计模式【15】—— 代理模式
代理模式(Proxy)
设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample
一、定义
给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
二、结构
Subject(抽象主题角色):声明真实主题和代理主题的共同接口,使得在任何使用真实主题的地方都可以使用代理主题。
Proxy(代理主题角色):代理主题角色内部包含了对真实主题的引用,从而可以在任何时候操作真实主题对象;
RealSubject(真实主题角色):定义了代理角色所代表的真实对象,在真实主题角色中实现了真实的业务操作。
三、优点
协调了调用者和被调用者,一定程度上降低了系统的耦合度
客户端针对抽象主题角色编程,增加和更换代理类无须修改源代码
四、缺点
在不必要的情况下使用代理会导致性能下降
五、应用场景
客户端需要访问远程主机中的对象时
需要一个消耗资源较少的对象来代表一个消耗资源较多的对象
需要控制对一个对象的访问,为不同用户提供不同级别的访问权限
六、个人总结
1、代理模式简单来说就是:
对一个类建立一个代理,那么只要你要访问这个类,那么就必须先访问代理类,然后由代理类来帮你访问这个类。
从现实中举例就像是一个明星的经纪人,你无法直接访问明星,必须先通过他的经济人。
2、java中对代理模式的实现称为动态代理
具体见例子中的代码
3、代理模式主要适用于
一个对象必须要被安全的访问
需要控制一个对象的访问权限
需要远程访问一个对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2016-11-02 你需要简单了解JVM中的内存长什么样子