你的位置:首页 > ASP.net教程

[ASP.net教程]《大话设计模式》学习笔记4:代理模式


  

代追求者送礼物示例:

1.Subject:

  public interface IGiveGift  {    void GiveDolls();    void GiveFlowers();    void GiveChocolate();  }

2.RealSubject:

  public class Pursuit:IGiveGift  {    SchoolGril girl;    public Pursuit(SchoolGril girl)    {      this.girl = girl;    }    public void GiveDolls()    {      Console.WriteLine(girl.Name + ",送你洋娃娃");    }    public void GiveFlowers()    {      Console.WriteLine(girl.Name + ",送你鲜花");    }    public void GiveChocolate()    {      Console.WriteLine(girl.Name + ",送你巧克力");    }  }

3.Proxy:

  public class Proxy:IGiveGift  {    Pursuit pursuit;    public Proxy(SchoolGril girl)    {      pursuit = new Pursuit(girl);    }    public void GiveDolls()    {      pursuit.GiveDolls();    }    public void GiveFlowers()    {      pursuit.GiveFlowers();    }    public void GiveChocolate()    {      pursuit.GiveChocolate();    }  }

4.其他类及客户端代码:

  public class SchoolGril  {    public string Name { get; set; }  }

  class Program  {    static void Main(string[] args)    {      SchoolGril girl = new SchoolGril();      girl.Name = "美女";      Proxy proxy = new Proxy(girl);      proxy.GiveDolls();      proxy.GiveFlowers();      proxy.GiveChocolate();    }  }

 

代理模式的应用:

1.远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。如WebServie。

2.虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。

3.安全代理,用来控制真实对象访问时的权限。

4.智能指引,是指当调用真实的对象时,代理处理另外一些事情。