zoukankan      html  css  js  c++  java
  • 设计模式——代理模式

         代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。

         例子:小明喜欢隔壁班的小美,想送礼物给小美。但是怕小美不收,小明就叫同寝室并且与小美一个班的小戴代替他送礼物给小美。

    代理接口:

    1  interface IGiveGift
    2     {
    3         void GiveDolls();
    4         void GiveFilowers();
    5         void GiveChocolate();
    6     }

    被追求者:

    1 class SchoolGirl
    2     {
    3         private string name;
    4         public string Name { get; set; }
    5     }

    追求者:

     1  class Pursuit:IGiveGift
     2     {
     3         SchoolGirl mm;
     4         public Pursuit(SchoolGirl mm)
     5         {
     6             this.mm = mm;
     7         }
     8         public void GiveDolls()
     9         {
    10             Console.WriteLine(mm.Name + ",送你洋娃娃");
    11         }
    12 
    13         public void GiveFilowers()
    14         {
    15             Console.WriteLine(mm.Name + ",送你鲜花");
    16         }
    17 
    18         public void GiveChocolate()
    19         {
    20             Console.WriteLine(mm.Name + ",送你巧克力");
    21         }
    22     }

    代理者

     1   class Proxy:IGiveGift
     2     {
     3         Pursuit gg;
     4         public Proxy(SchoolGirl mm)
     5         {
     6             gg = new Pursuit(mm);
     7         }
     8 
     9         public void GiveDolls()
    10         {
    11             gg.GiveDolls();
    12         }
    13 
    14         public void GiveFilowers()
    15         {
    16             gg.GiveFilowers();
    17         }
    18 
    19         public void GiveChocolate()
    20         {
    21             gg.GiveChocolate();
    22         }
    23     }

    客户端

     1  static void Main(string[] args)
     2         {
     3             SchoolGirl jiaojiao = new SchoolGirl();
     4             jiaojiao.Name = "小美";
     5 
     6             Proxy daill = new Proxy(jiaojiao);
     7 
     8             daill.GiveDolls();
     9             daill.GiveFilowers();
    10             daill.GiveChocolate();
    11 
    12             Console.Read();
    13         }

    效果:

    代理模式结构图:

  • 相关阅读:
    [Android Studio] Android studio 多渠道打包(超简洁版)
    AlarmManager、PendingIntent的使用附件Home监听十分钟后再度启动应用取消服务
    share Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)
    Flex 调用webService
    mac下安装应用及常用快捷键
    mac下设置maven环境
    0302关于软件工程的思考
    文法评论
    C语言文法
    44-小组词法分析
  • 原文地址:https://www.cnblogs.com/wugu-ren/p/6142633.html
Copyright © 2011-2022 走看看