zoukankan      html  css  js  c++  java
  • 02_代理模式

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

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

    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         }

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

    参考:大话设计模式

  • 相关阅读:
    linux
    【转】三种地理参考信息模型:WMS,WFS,WCS
    Flex工程与Asp.net工程集成发布时若干注意事项
    招聘Asp.NET高级开发人员
    【转】2008'中国地理信息系统优秀工程公示
    推荐一本GIS的好书《空间数据库》
    集中推荐一些Map Projection方面资源
    收藏几篇虚拟化的文章
    征集“地图制图”WEB站点、BBS
    [转]NHibernate文章转载
  • 原文地址:https://www.cnblogs.com/liyajie/p/4479853.html
Copyright © 2011-2022 走看看