• 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         }

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

    参考:大话设计模式

  • 相关阅读:
    [转载]很完整的2、8、10、16进制转换方法
    [转载]C++星号的含义
    [转载]C++星号的含义
    [转载]麦凯66表格
    [转载]js入门·对象属性方法大总结
    [转载]图解《越狱》中纸玫瑰的折法
    [转载]比较开始日期与结束日期的js方法
    Cannot set device tcp segmentation offload settings: Invalid argument
    记一次薪酬谈判的教训
    TCP拥塞状态机的实现(中)
  • 原文地址:https://www.cnblogs.com/liyajie/p/4479853.html
Copyright © 2020-2023  润新知