代理模式,顾名思义,就是让另一个人帮你办事儿,代理就是帮你办事的人,你只需要交代一下你要办什么事,让代理去做
在大话设计模式中看到的代理模式的例子,
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 }
小弟菜鸟,请多指教,多多勉励,共同进步
参考:大话设计模式