Fork me on GitHub

大战设计模式【15】—— 代理模式

代理模式(Proxy)

 

设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

 

一、定义

给某一个对象提供一个代理,并由代理对象控制对原对象的引用。

 

二、结构

Subject(抽象主题角色):声明真实主题和代理主题的共同接口,使得在任何使用真实主题的地方都可以使用代理主题。

Proxy(代理主题角色):代理主题角色内部包含了对真实主题的引用,从而可以在任何时候操作真实主题对象;

RealSubject(真实主题角色):定义了代理角色所代表的真实对象,在真实主题角色中实现了真实的业务操作。

 

三、优点

协调了调用者和被调用者,一定程度上降低了系统的耦合度

客户端针对抽象主题角色编程,增加和更换代理类无须修改源代码

 

四、缺点

在不必要的情况下使用代理会导致性能下降

 

五、应用场景

客户端需要访问远程主机中的对象时

需要一个消耗资源较少的对象来代表一个消耗资源较多的对象

需要控制对一个对象的访问,为不同用户提供不同级别的访问权限

 

六、个人总结

1、代理模式简单来说就是:

对一个类建立一个代理,那么只要你要访问这个类,那么就必须先访问代理类,然后由代理类来帮你访问这个类。

从现实中举例就像是一个明星的经纪人,你无法直接访问明星,必须先通过他的经济人。

2、java中对代理模式的实现称为动态代理

具体见例子中的代码

3、代理模式主要适用于

一个对象必须要被安全的访问

需要控制一个对象的访问权限

需要远程访问一个对象

 

posted @   LinkinStar  阅读(295)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2016-11-02 你需要简单了解JVM中的内存长什么样子
点击右上角即可分享
微信分享提示