希望赶快把常用的设计模式总结一下.....
代理模式(Proxy)是对象的结构模式,GOF著作作为经典之作,这里还是引用它的描述:为其他对象提供一种代理以控制对这个对象的访问。《Java与模式》一书讲得通俗易懂一些,也即是:代理模式给某一对象提供一个代理对象,并由代理对象控制对原对象的引用。所谓代理,就是一个人或一个机构代表另一个人或另一个机构采取行动。代理对象可以在客户端与目标对象之间起到中介的作用。以下是GFO给出的代理模式结构:
通过给定的结构图,设计出以下代码:

1 abstract class Subject{ 2 abstract public void Request(); 3 } 4 class RealSubject extends Subject{ 5 public void Request(){ 6 System.out.println("this is RealSubject::Request()"); 7 } 8 } 9 class Proxy extends Subject{ 10 private RealSubject realSubject; 11 public void Request(){ 12 preRequest(); 13 if(realSubject==null){ 14 realSubject=new RealSubject(); 15 } 16 realSubject.Request(); 17 postRequest(); 18 } 19 private void preRequest(){ 20 System.out.println("this is Proxy::preRequest()"); 21 } 22 private void postRequest(){ 23 System.out.println("this is Proxy::postRequest()"); 24 } 25 } 26 27 public class Test{ 28 public static void main(String[] args) { 29 Subject sub=new Proxy(); 30 sub.Request(); 31 } 32 }
这里,我们创建一个代理对象sub,当用户请求代理对象sub处理一些业务是,代理对象sub实际上是将业务传递给一个原本就是对该业务进行管理的对象(我们定义为RealSubject类),而用户并不知道RealSubject的存在,代理类还可以在RealSubject完成业务之前或之后做一些操作。比如业务的预处理和后期处理等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?