转载

设计模式-代理模式

 

示例

我们按照UML图来做一个简单的例子进行初步体验

(1.1)抽象主题类Subject

/// <summary>     /// 抽象角色     /// </summary>     public abstract class Subject     {         //抽象方法         public abstract void Request();     }

(1.2)真实主题类RealSubject

/// <summary> /// 真实主题 /// </summary> public class RealSubject : Subject {  /// <summary>  /// 重写父类的方法  /// </summary>  public override void Request()  {   Console.WriteLine("真实的主题");  } } 

(1.3)代理Proxy

在代理类中我们可以根据实际情况进行一些处理,下边的begin_Request()和end_Request()就是一个预留

/// <summary> /// 代理类 /// </summary> public class Proxy : Subject {  //持有的主题的对象  private RealSubject _subject = null;  public override void Request()  {   //0.1请求开始   this.begin_Request();   //0.2处理   if (_subject == null)    _subject = new RealSubject();   _subject.Request();   //0.3善后处理   this.end_Request();  }  #region 加入我们自己的逻辑处理方法  /// <summary>  /// 开始请求   /// </summary>  public void begin_Request()  {   Console.WriteLine("..begin request");  }  /// <summary>  /// 结束请求  /// </summary>  public void end_Request()  {   Console.WriteLine("..end request");  }  #endregion } 

(1.4)客户端调用

class Program {  static void Main(string[] args)  {   //代理类   Proxy proxy = new Proxy();   proxy.Request();   Console.ReadKey();  } } 

(1.5)测试结果

设计模式-代理模式

正文到此结束
Loading...