.NET 代理模式(一)基本概念

代理模式

代理模式,它是一种结构型的设计模式。

让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。

简单理解就是 客户端不会直接与实际实现类打交道,而是通过对实现类的进一步封装成代理类,该代理类不会改变实现类原本的功能(行为),只是在实现类的方法前后添加一些自定义行为用于记录。

参考下图:
image

代理模式的应用场景

代理模式的应用场景多种多样

比如:

  • 虚拟代理:针对宝贵资源,可能比较消耗系统资源,可通过代理模式针对类型的初始化延迟到真正需要时进行加载,一般配合享元模式实现池化技术。
  • 保护代理:需要满足一定条件的客户端(鉴权)才能够使用,可考虑使用保护代理,预防恶意程序使用此对象。
  • 日志记录:需要记录代理对象执行前后的过程时间等等。
  • 缓存代理:针对一些重复请求,考虑使用此模式。
  • 动态代理:此模式一般依靠语言的反射特性,通过接口或继承方式,实现针对不同的被代理类,统一实现代理行为。

代码实现

public class ProxyPattern : MainClass
{
public abstract class AbstractSubject
{
public abstract void Operation();
}
public class RealSubject : AbstractSubject
{
public override void Operation()
{
Console.WriteLine("执行操作");
}
}
public class ProxySubject : AbstractSubject
{
private readonly AbstractSubject _subject;
public ProxySubject(AbstractSubject subject)
{
this._subject = subject;
}
private void BeforOperation()
{
Console.WriteLine("执行前的操作");
}
private void AfterOperation()
{
Console.WriteLine("执行后的操作");
}
public override void Operation()
{
BeforOperation();
_subject.Operation();
AfterOperation();
}
}
public override void Main()
{
AbstractSubject subject = new RealSubject();
AbstractSubject proxySubject = new ProxySubject(subject);
proxySubject.Operation();
}
}

.NET 中代理模式的应用场景

  • Filter过滤器 针对MVC中提供不同类型的Filter的钩子事件,提供自定义的行为。
  • Middle中间件 针对http的管道请求,可添加自定义管道节点,针对http的一些metadata数据进行个性化处理。
  • HttpClient类 .NET Core Web项目中常用于进行HTTP请求和响应。在某些情况下,我们可能会使用代理来拦截、修改或者扩展HTTP请求和响应,例如添加身份验证、日志记录等。
  • IOC容器动态代理,对容器内的实现类添加动态的代理行为。
  • Repository模式 在应用程序中使用Repository模式时,Repository类通常充当数据访问层的代理,隐藏了数据访问的具体实现细节。我们可以在不直接与数据访问层交互的情况下,通过Repository类来访问数据。

参考链接

代理模式
设计模式-代理模式
C#设计模式(13)——代理模式(Proxy Pattern)

posted @   Dyhuang  阅读(405)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示