代理模式(Proxy Pattern)
概念:
· 一种结构型设计模式;
· 为其他对象提供一种代理以控制对这个对象的访问;
· 代理可以在真实对象实现的前后进行必要的对实现的补充;
UML结构:
csSubject(抽象主题) ^ | ------------------------------ | | RealSubject(真实主题) Proxy(代理) | 持有 RealSubject 引用代码示例:
cs/// <summary> /// 主题抽象类 /// </summary> public abstract class Subject { public abstract void Request(); } /// <summary> /// 真实主题实现类 /// </summary> public class RealSubject : Subject { public override void Request() { Console.WriteLine("真实主题:处理请求"); } } /// <summary> /// 代理类 /// </summary> public class Proxy : Subject { private RealSubject _realSubject; public override void Request() { if (_realSubject == null) { _realSubject = new RealSubject(); } Console.WriteLine("代理:在调用真实主题之前,可以执行额外操作"); _realSubject.Request(); Console.WriteLine("代理:在调用真实主题之后,可以执行额外操作"); } } /// <summary> /// 客户端 /// </summary> public class Client { public static void Main() { Subject proxy = new Proxy(); proxy.Request(); } }特点:
优点:· 控制访问:可以在不改变真实对象的情况下,控制对它的访问逻辑;
· 扩展功能:代理可以在调用前后附加功能,比如权限、日志、统计等等;
· 延迟加载:可以实现延迟加载,只有在真正需要时才创建,节省资源;
· 远程代理:客户端通过代理向本地一样调用远程对象;
缺点:· 增加了系统的复杂度;
· 可能影响了性能;
· 滥用可能会导致代码的臃肿;
适用场景:
· 远程代理:为远程对象提供本地代理(如.NET Remoting、WebService);
· 虚拟代理:需要大量资源的对象,延迟加载(大图像、视频等等);
· 保护代理:控制不同用户对目标对象的访问权限;
· 智能指引:访问对象时提供额外服务;
举例场景:
· 延时加载
【设计模式】代理模式
大飞pkz2025-09-30 14:16
相关推荐
aramae3 小时前
模拟实现strcmp()(C语言)泡海椒4 小时前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色Beyond_System|系统之外5 小时前
【学编程】Python基础编程题100道(21-60)景熙55235 小时前
15.Java 8 Stream 流入门到实战c#上位机6 小时前
C#上位机项目实战——Task.Run执行带参数的方法Bruce_Liuxiaowei8 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱aramae9 小时前
MySQL内置函数(7)Lost of 程序猿12 小时前
用 YARP 为 .NET 微服务搭一座“立交桥“:路由转发与生产配置实践码行山野赴时序归途12 小时前
链表家族收官篇:循环链表景熙552312 小时前
单体项目编写思路和落地形式