Proxy Pattern using C#

Proxy Pattern using C#

 

 

Proxy Pattern(代理模式)属于Structural Pattern(结构型模式),Proxy Pattern-Client真正要调用的对象提供一个代理(Surrogate or placeholder),来控制Client对该对象的访问。

 

1. UML class diagram:

上图Proxy class就是一个代理类,负责转发来自Client的请求到真正的RealSubject对象。Proxy ClassRealSubject Class共同继承抽象类Subject

 

2. Sample code

上述UML class diagram的实现代码(from reference 1):

// Proxy pattern – Demo code

using System;

// 抽象类
abstract class Subject
{
  abstract public void Request();
}

// 实际要调用的类
class RealSubject : Subject
{
  override public void Request()
  {
    Console.WriteLine("Called RealSubject.Request()");
  }
}
// 代理类
class Proxy : Subject
{
   RealSubject realSubject;
  // Methods
  override public void Request()
  {
    // Uses "lazy initialization"
    if( realSubject == null )
      realSubject = new RealSubject();

    realSubject.Request();
  }
}

/// <summary>
/// Client test
/// </summary>
public class Client
{
  public static void Main( string[] args )
  {
    // Create proxy and request a service
    Proxy p = new Proxy();
    p.Request();
  }
}

 

3. Appendix about the article

温故而知新,运用于无形。

 

.Net Framework中大量使用到Proxy Design Pattern,如.Net Remoting中的SAO (Server Activated Object)CAO (Client Activated Object)XML Web Services等,Client端都是通过本地Proxy class来转发对Remote Objects or Services的请求,和获取来自Remote的响应。

 

Reference:

1Proxy Design Pattern, http://www.dofactory.com/patterns/PatternProxy.aspx

 

posted @   Rickie  阅读(1807)  评论(5编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示