当前位置: 网学 > 编程文档 > 其他类别 > 正文

设计模式系列之代理模式

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12

今天下班,同事们无聊中又聊到了食堂(怎么写食堂?吃货啊!),办公区离食堂远的同事老阮在大家你一句我一句的诱惑下,终于忍不住了决定不管在远也要找时间去尝尝,但是因为上班不顺路也不是很方便,就委托我们宿舍的老李同志帮忙第二天先去开卡充值,热心肠的老李当然不会拒绝喽。

1、模拟场景

有了这个前奏今天的主题就当然又有了,那么首先我们用代码来实现上面的功能,首先来分析一下上面的场景:

①我们需要对卡片充值,所以需要一个卡片类,代码如下:

  1.  /// <summary> /// 卡片类  
  2. /// </summary>  
  3. public class Card  
  4. {  
  5.  //卡片名称  
  6. private string cardName = string.Empty;  
  7. public string CardName  
  8. {  
  9. get 
  10. {  
  11. return cardName;  
  12. }  
  13. set 
  14. {  
  15. cardName = value;  
  16. }  
  17. }  
  18. //构造方法  
  19. public Card() { }  
  20. public Card(string cName)  
  21. {  
  22. cardName = cName;  
  23. }  

②接下来就是路远的老阮,他的工卡需要去激活,代码如下:

  1. /// <summary> /// 老阮  
  2. /// </summary>  
  3. public class MrRuan  
  4. {  
  5. //他有一个工卡  
  6. private Card myCard = new Card("mrRuan");  
  7. public Card MyCard  
  8. {  
  9. get 
  10. {  
  11. return myCard;  
  12. }  
  13. }  

③接下来就是激活卡片当然要去柜台了,记得在单例模式中已经将这个柜台类实现了,那么我们就拿来用现成的吧,代码如下: 

  1. /// <summary> /// 柜台类  
  2. /// </summary>  
  3. public sealed class Counter  
  4. {  
  5. //在第一次调用类成员时,初始化唯一实例  
  6. private static readonly Counter instance = new Counter();  
  7. private Counter()  
  8. {  
  9. }  
  10. //返回类型实例属性  
  11. public static Counter Instance  
  12. {  
  13. get 
  14. {  
  15. return instance;  
  16. }  
  17. }  
  18. //激活工卡方法  
  19. public void ActivationCard(Card card)  
  20. {  
  21. //激活工卡的过程  
  22. Console.WriteLine("{0}的工卡激活成功!",card.CardName);  
  23.  }  

④再就是帮助老软第二天去激活卡片的老李,因为老李需要去激活卡片,所以包含激活卡片的操作,代码如下:

  1. /// <summary> /// 热心肠的老李  
  2. /// </summary>  
  3. public class MrLi  
  4. {  
  5. //激活工卡方法  
  6. public void ActivationCard(Card card)  
  7. {  
  8. Counter.Instance.ActivationCard(card);  
  9. }  

⑤类型都抽象出来之后当然就是第二天去激活卡片啦,主函数调用代码如下:

  1. static void Main(string[] args)  
  2. {  
  3. //实例化老阮  
  4. MrRuan ruan = new MrRuan();  
  5. //实例化老李  
  6. MrLi li = new MrLi();  
  7. //将卡片给老李,老李负责去激活  
  8. li.ActivationCard(ruan.MyCard);  

仔细想了一下,这样一来老李也就成了柜台开卡的代理人了,以后别人也可以委托他去帮忙激活卡片了,这不就是活生生的代理模式吗?

这时你要

  • 下一篇资讯: 企业应用架构模式
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号