代理模式

前言

  代理模式(Proxy),为其他对象提供一种代理以控制对这个对象得访问,这样可以隐藏一个对象存在于不同地址空间得事实。

一、接口

  定义一个给妹子送花得接口,让代理类追求者类继承

1     /// <summary>
2     /// 送礼物接口
3     /// </summary>
4     public interface IGiveGift
5     {
6         void GiveFlowers();
7     }

二、被追求的妹妹类

  就一个妹妹的名字的字段

1     public class Girl
2     {
3         public string Name { get; set; }
4     }

三、屌丝类

  1、继承送礼物接口类

  2、通过构造函数把要送花的妹子传进去

  3、实现接口,屌丝要给妹子送花了

 1     /// <summary>
 2     /// 追求者实现“送礼物”接口
 3     /// </summary>
 4     public class Pursuit : IGiveGift
 5     {
 6         Girl girl;
 7         public Pursuit(Girl girl)
 8         {
 9             this.girl = girl;
10         }
11         public void GiveFlowers()
12         {
13             Console.WriteLine(""+ girl.Name+" 送花");
14         }
15     }

四、代理类

  1、代理类继承接口

  2、通过构造函数传入屌丝追求者类

  3、实现接口,并执行了追求者类的送花

 1     /// <summary>
 2     /// 代理类也实现送礼物接口
 3     /// </summary>
 4     public class Proxy : IGiveGift
 5     {
 6         Pursuit gg;
 7         public Proxy(Girl mm)
 8         {
 9             gg = new Pursuit(mm);
10         }
11         /// <summary>
12         /// 实现追求者类得相关方法
13         /// </summary>
14         public void GiveFlowers()
15         {
16             gg.GiveFlowers();
17         }
18     }

五、测试

  

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Girl mm = new Girl();
 6             mm.Name = "小甜甜";
 7 
 8             Proxy p = new Proxy(mm);
 9             p.GiveFlowers();
10             Console.ReadKey();
11         }
12     }

  打印结果:给 小甜甜 送花

总结:

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

  2、虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真是对象。这样就可以达到性能的最优化。

  3、安全代理,用来控制真是对象访问时的权限。一般用于对象应该有不同的访问权限的时候。

  4、智能指引,指当调用真实的对象时,代理处理另外一些事。如计算真实对象的引用次数。

  参考书籍:大话设计模式

原文地址:https://www.cnblogs.com/hyunbar/p/9843466.html