首页 > 技术文章 > 02_代理模式

liyajie 2015-05-05 17:52 原文

代理模式,顾名思义,就是让另一个人帮你办事儿,代理就是帮你办事的人,你只需要交代一下你要办什么事,让代理去做

在大话设计模式中看到的代理模式的例子,

A--喜欢-->MM,想送点礼物给MM,但是处于不好意思表白,只好找了另一个人B来帮他去传达心意,送礼物,则B就是代理

类似的例子还有房屋中介,自己不方便找房子的时候我们就把要求告诉房屋中介,让他们帮我们找合适的房子

 

上面的例子中说的很明白,A和B都能可以送礼物给MM,但是A不好意思,所以实际上给MM送礼物的是B,但是A和B都有这个送礼物的能力,

所以我们针对送礼物这个能力创建一个接口

1 public interface IGiveGift
2     {
3         void GiveGift();
4     }

既然A和B都可以送礼物,所以他们都有这个送的能力,所以要实现送礼物的接口

 1 public class A:IGiveGift
 2     {
 3         MM m = null;//将礼物送给谁
 4 
 5         public A(MM m)
 6         {
 7             this.m = m;
 8         }
 9 
10         #region IGiveGift 成员
11 
12         public void GiveGift()
13         {
14             Console.WriteLine(m.Name+" 送给你点礼物");
15         }
16 
17         #endregion
18     }
 1 public class B:IGiveGift
 2     {
 3         A a = null;//给谁做代理,这里是给A做代理
 4 
 5         public B(A a)
 6         {
 7             this.a = a;
 8         }
 9 
10         #region IGiveGift 成员
11 
12         public void GiveGift()
13         {
14             a.GiveGift();
15         }
16 
17         #endregion
18     }

MM只有一个名字属性

1 public class MM
2     {
3         /// <summary>
4         /// MM名字
5         /// </summary>
6         public string Name { get; set; }
7     }

调用:

1 static void Main(string[] args)
2         {
3             MM m = new MM() { Name="MM"};//接收礼物者
4             A a = new A(m);//掏钱买礼物并想送给MM的人
5             B b = new B(a);//实际上帮A送礼物的人
6             b.GiveGift();
7             Console.Read();
8         }

小弟菜鸟,请多指教,多多勉励,共同进步

参考:大话设计模式

推荐阅读