设计模式之我吾-代理模式的理解

来源:互联网 发布:适合程序员的名字 编辑:程序博客网 时间:2024/04/30 23:38

杜思波最近啊!一直在研读设计模式相关书籍,深感设计模式是程序设计之良药也,为什么这么说呢?因为我读完几个模式之后啊,深深赶到其中的乐趣。

       设计模式中有很多种模式概念,我们一个个来逐个讲解。

       这次我们要讲解我对代理模式的理解,首先我们要了解代理模式的基本概念,我们先来讲一个小故事来轻松轻松。从前有一个秀才,十分好学,少年时光基本用在四书五经上了,可是转眼青年了,书是读了不少,但是意中人却无一个,这可急坏了秀才,如何是好啊!乡里乡亲的也有好心人,她是一个媒婆(以前专门给人介绍对象的人叫媒婆),名叫花姑,她也是个热心肠的人,看见秀才眉清目秀的还没有个意中人心里也十分想给秀才介绍一个,于是就在暗地里面物色着合适对象,不经意间的一个早上在河边看到一个姑娘,那个生的水灵哦!!于是急忙上前打听姑娘的情况,方知姑娘 年芳18,还未许配人家,这下可把花姑给乐坏了!心想这下秀才有戏了,下午花菇赶紧回家和秀才说起此事,秀才也是兴奋的不得了,可是问题又来了,什么问题?秀才自幼饱读诗书,是个十足的读书人,对男女感情之事甚少触及,因此都不知道如何和姑娘交流,这个可着急坏了花姑了,为了能成全两人,花姑想了一个办法,由她来给两人牵线,给他们传递信息,待到时机成熟之后再见面谈婚论嫁。于是花姑和秀才约定好了该说什么不该说什么。定下来以后,花姑就去传达秀才的美意,姑娘知道秀才对自己有意思,也托花姑传递自己对秀才的好感,这样来来去去,半年之后,两人终成眷属了。真是感人啊~~~现代社会还有这等好事否?o(∩_∩)o...~~~~~

 

      好了故事讲完了,我们回归正题来讲设计模式中了,其实上面的故事从侧面就映射除了设计模式中的一个模式-代理模式。

     秀才:委托者

     花姑:代理

     姑娘:被告知者(同时也是委托者)

     该做什么不该做什么:定义约定接口

     代理模式中牵涉到上述三个概念,秀才作为一个(委托者),委托(代理)花姑去告诉姑娘(被告知者)自己的意愿,而花姑呢则按照秀才约定好的规则(接口)去告诉姑娘秀才的意愿。这样来回就让秀才和姑娘两人建立起了感情,但是这个过程两人并没有参加进来,而是通过花姑作为代理来传递的。

     这个就是代理模式工作的流程。

 

    下述给出代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace 设计模式_代理模式
  5. {
  6.  class Program
  7.  {
  8.   static void Main(string[] args)
  9.   {
  10.    MM plmm = new MM();
  11.    plmm.MMName = "美女女孩";
  12.    Proxy Proxy1 = new Proxy(plmm);
  13.    Proxy1.Givedolis();
  14.    Proxy1.GiveFlowes();
  15.    Proxy1.GiveMoney();
  16.    Console.ReadLine();
  17.   }
  18.  }
  19.  class pursuit : Ifun //秀才
  20.  {
  21.   MM plmm=null;
  22.   public pursuit(MM name)
  23.   {
  24.    plmm = name;
  25.   }
  26.   public void Givedolis()
  27.   {
  28.    Console.WriteLine(plmm.MMName+":秀才送给你针");
  29.   }
  30.   public void GiveFlowes()
  31.   {
  32.    Console.WriteLine(plmm.MMName+":秀才送给你线");
  33.   }
  34.   public void GiveMoney()
  35.   {
  36.    Console.WriteLine(plmm.MMName+":秀才送给你布料");
  37.   }
  38.  }
  39.  class Proxy:Ifun //花姑
  40.  {
  41.   pursuit GG = null;
  42.   public Proxy(MM name)
  43.   {
  44.    GG = new pursuit(name);
  45.   }
  46.   public void Givedolis()
  47.   {
  48.    GG.Givedolis();
  49.   }
  50.   public void GiveFlowes()
  51.   {
  52.    GG.GiveFlowes();
  53.   }
  54.   public void GiveMoney()
  55.   {
  56.    GG.GiveMoney();
  57.   }
  58.  }
  59.  class MM//姑娘
  60.  {
  61.   private string MMname = null;
  62.   public string MMName
  63.   {
  64.    get { return MMname; }
  65.    set { MMname = value; }
  66.   }
  67.  }
  68.  //行为接口
  69.  interface Ifun
  70.  {
  71.   void Givedolis();
  72.   void GiveFlowes();
  73.   void GiveMoney();
  74.  }
  75. }
原创粉丝点击