设计模式——代理模式

     代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。

     例子:小明喜欢隔壁班的小美,想送礼物给小美。但是怕小美不收,小明就叫同寝室并且与小美一个班的小戴代替他送礼物给小美。

代理接口:

1  interface IGiveGift
2     {
3         void GiveDolls();
4         void GiveFilowers();
5         void GiveChocolate();
6     }

被追求者:

1 class SchoolGirl
2     {
3         private string name;
4         public string Name { get; set; }
5     }

追求者:

 1  class Pursuit:IGiveGift
 2     {
 3         SchoolGirl mm;
 4         public Pursuit(SchoolGirl mm)
 5         {
 6             this.mm = mm;
 7         }
 8         public void GiveDolls()
 9         {
10             Console.WriteLine(mm.Name + ",送你洋娃娃");
11         }
12 
13         public void GiveFilowers()
14         {
15             Console.WriteLine(mm.Name + ",送你鲜花");
16         }
17 
18         public void GiveChocolate()
19         {
20             Console.WriteLine(mm.Name + ",送你巧克力");
21         }
22     }

代理者

 1   class Proxy:IGiveGift
 2     {
 3         Pursuit gg;
 4         public Proxy(SchoolGirl mm)
 5         {
 6             gg = new Pursuit(mm);
 7         }
 8 
 9         public void GiveDolls()
10         {
11             gg.GiveDolls();
12         }
13 
14         public void GiveFilowers()
15         {
16             gg.GiveFilowers();
17         }
18 
19         public void GiveChocolate()
20         {
21             gg.GiveChocolate();
22         }
23     }

客户端

 1  static void Main(string[] args)
 2         {
 3             SchoolGirl jiaojiao = new SchoolGirl();
 4             jiaojiao.Name = "小美";
 5 
 6             Proxy daill = new Proxy(jiaojiao);
 7 
 8             daill.GiveDolls();
 9             daill.GiveFilowers();
10             daill.GiveChocolate();
11 
12             Console.Read();
13         }

效果:

代理模式结构图:

posted @ 2016-12-07 20:35  竹林幽径  阅读(184)  评论(0编辑  收藏  举报
TOP