代理模式

[ Proxy ]

[
抽象接口 : 由被代理类抽象出来的接口 , 被代理类实现了所有方法
被代理类 : 原始需要调用的对象 , 里面定义了一些列方法
代理类 : 同样继承了抽象接口 , 并且在类的内部有一个被代理类的引用 , 生命周期和代理类一样 , 在代理类继承接口的方法里 , 调用被代理类的方法
]

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

所谓代理 , 就是一个人或者一个机构代表另一个人或者另一个机构采取行动 。
在一些情况下 , 一个客户不想或者不能改直接引用一个对象 , 而代理对象可以在客户端或目标对象之间起到中介的作用。


抽象出 实际调用类(Autcal) 的要代理的方法 , 做成接口
代理类 继承接口 , 保留一个实际调用类的引用
代理类 构造函数里 , 构造实际调用类的实例
代理类 重写接口里的方法 , 在方法里调用 实际调用类 的相同方法




源码:

public interface IProxy
{
  void Test();
}




// <summary>
// 实际使用的类(被代理的类)
// </summary>
public class Actual : IProxy
{
  private string Name = "";
  public Actual(string name)
  {
    Name = name;
  }


  #region IProxy 成员
  public void Test()
  {
    Console.WriteLine(Name + " Actual Test ");
  }
  #endregion
}




// <summary>
// 代理类 , 代理类给实际使用类做代理
// </summary>
public class Proxy : IProxy
{
  private Actual actual;
  public Proxy(string name)
  {
    actual = new Actual(name);
  }

  #region IProxy 成员
  public void Test()
  {
    actual.Test();
  }
  #endregion
}




class Program
{
  static void Main(string[] args)
  {
    Proxy p = new Proxy("小强");
    p.Test();

    Console.Read();
  }
}

posted on 2012-02-21 11:54  多个马甲  阅读(174)  评论(0编辑  收藏  举报