一道.Net程序员面试题的讨论:猫大叫,鼠速逃,人醒了。

考虑:
(1)联动性
(2)可扩展性

编程实现它。
试了一下.

  1 using System;
  2 
  3 namespace demo_2
  4 {
  5     /// <summary>
  6     /// Class2 的摘要说明。
  7     /// </summary>
  8     public delegate void delegate_handler(object sender,EventArgs e);
  9     public class Class2
 10     {
 11         
 12         /// <summary>
 13         /// 应用程序的主入口点。
 14         /// </summary>
 15         [STAThread]
 16         static void Main(string[] args)
 17         {
 18             Cat  objCat = new Cat();
 19             Mouse  objMouse=new Mouse();
 20             Man  objMan=new Man();
 21             objCat.add_EventHandler(new delegate_handler(objMouse.run));
 22             objMouse.add_EventHandler(new delegate_handler(objMan.wakeup));
 23             objCat.CatCry();
 24             
 25         }
 26     }
 27     public  class  Cat
 28     {
 29         public Cat()
 30         {
 31             Console.WriteLine("产生猫");
 32         }
 33         public event delegate_handler Cry; 
 34         protected virtual void OnCry(EventArgs e) 
 35         { 
 36             if(Cry != null) 
 37             { 
 38                 Cry(this,e); 
 39             } 
 40         }
 41         public void add_EventHandler(delegate_handler dh)
 42         {
 43             if(dh==null)
 44             {
 45                 Cry=dh;
 46             }
 47             else
 48             {
 49                 Cry +=dh; 
 50             }
 51 
 52         }
 53         public  void   CatCry()
 54         {
 55             Console.WriteLine("猫叫了"); 
 56             System.Threading.Thread.Sleep(500); 
 57             OnCry(new System.EventArgs());
 58         }
 59     } 
 60     public  class  Mouse
 61     {
 62         public Mouse()
 63         {
 64             Console.WriteLine("产生老鼠");
 65         }
 66         public event delegate_handler MouseRun;
 67         protected virtual void OnRun(EventArgs e) 
 68         { 
 69             if(MouseRun != null) 
 70             { 
 71                 MouseRun(this,e); 
 72             } 
 73         }
 74         public void add_EventHandler(delegate_handler dh)
 75         {
 76             if(dh==null)
 77             {
 78                 MouseRun=dh;
 79             }
 80             else
 81             {
 82                 MouseRun +=dh; 
 83             }
 84 
 85         }
 86         public void run(object sender,EventArgs e) 
 87         { 
 88             Console.WriteLine("老鼠逃了"); 
 89             System.Threading.Thread.Sleep(500); 
 90             OnRun(new System.EventArgs());
 91         } 
 92     }
 93     public  class Man
 94     {
 95         public Man()
 96         {
 97             Console.WriteLine("产生人");
 98         }
 99         public void wakeup(object sender,EventArgs e) 
100         { 
101             Console.WriteLine("人醒了"); 
102         } 
103     }
104 }

转载于:https://www.cnblogs.com/Jodan/archive/2007/02/27/658565.html

猫大叫,鼠速逃,人醒了相关推荐

  1. Java猫叫老鼠跑人惊醒_面试题:猫叫、老鼠跑、人醒的一点看法

    这些天一直在面试中,做着不同的面试题,唉,悲催 上周做的一道面试题今天正好出现在园里的首页,看了一下这位同学的实现,基本上方向是对的,就是代码上细节没有注意,有一些错误,这里我就写一下我的理解 --- ...

  2. Java猫叫老鼠跑人惊醒_关于猫叫、老鼠逃跑、人被惊醒的程序设计

    题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. 要求: 1.要有联动性,老鼠和人的行为是被动的 2.考虑可扩展行,猫叫声可能会引起其他联动效应 看到这个程序设计题目,我的第一反应是用事件 ...

  3. 转-观察模式 猫叫鼠跑人醒

    转-观察模式 猫叫鼠跑人醒 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. public interface Observer     {         void Response();    // ...

  4. 观察者模式和委托实现 - 老鼠跑,猫叫,人醒

    老鼠跑,猫叫,人醒是典型的事件联动,解决此种情形,可以利用观察者模式或者事件委托来实现.利用设计模式时要考虑耦合,但利用事件委托的话,就不需要了.因为用委托的话,理解比较容易,这里没有单写,而是将委托 ...

  5. 关于猫叫、老鼠逃跑、人被惊醒的程序设计

    题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. 要求: 1.要有联动性,老鼠和人的行为是被动的 2.考虑可扩展行,猫叫声可能会引起其他联动效应 看到这个程序设计题目,我的第一反应是用事件 ...

  6. 猫大叫,两只老鼠开始逃跑,主人醒来,宝宝也醒来了并且哭了起来.

    using System; namespace DelegateEvent { /** <summary> /// 在Observer Pattern(观察者模式)中,此类作为所有Subj ...

  7. 【转】细数中国十大名校的IT牛人

    [转]细数中国十大名校的IT牛人 "不想成为元帅的士兵不是好士兵"----拿破仑.巴拿马 拨开IT江湖上的恩怨纠缠和刀光剑影,我们发现这些IT人原本有着共同的甜蜜的追忆:大学.那些 ...

  8. Python如何实现24个微信大群(共万人)同步转发直播?

    很多人传言微信网页版(https://wx.qq.com/)接口已经被封了,所以所有的微信都不能登录网页版,这是错误的. 2019年7月微信对网页版微信进行了动态安全策略调整,导致一大批微信号不能登录 ...

  9. 多态部分作业 3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)

    package Day11; /*3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠),等等这样一个的继承层次结构.在基类中,提供对所有的Roden ...

最新文章

  1. 基于Java语言构建区块链(四)—— 交易(UTXO)
  2. MVC下实现LayUI分页的Demo
  3. 设置过mysql远程连接后仍然无法进行远程连接 (mysql mysql报错2003 can't connect)
  4. python中gmtime的hour错误_python中gmtime的hour错误_在Python中操作日期和时间之gmtime()方法的使用...
  5. left join 大表放前面_带娃时,走在孩子前面与跟在孩子身后区别很大,很多父母都做错了...
  6. Welcome to Apache HBase 介绍一
  7. 南方cass字体样式设置_cass改变字体格式 cass字体样式管理器
  8. 黑群晖数据迁移白群晖(DS 920+)
  9. pyaudio 声音处理
  10. python分秒换算_如何将度分秒转换为度分
  11. 屏幕录像专家 7.5下载+注册机
  12. android高仿ios控制中心,仿 iOS 11原生控制中心
  13. android root 的作用,安卓手机Root好不好?手机Root后有什么好处和影响?
  14. zblog php 源码,zblog技术导航v2.3全站源码+数据
  15. pdf文件如何在安卓手机端不用下载在线预览
  16. 计算机仿真氢光谱实验,氢氘灯光谱 实验报告
  17. MATLAB 学习笔记:1 定义和使用矩阵
  18. 互动媒体——自画像+简单音乐可视化
  19. matlab图形网格线画虚线
  20. 密室逃脱,玩的就是智慧

热门文章

  1. 页面上显示的带有乱码名称的js文件是怎么回事?
  2. fastdfs上传文件时报错No route to host
  3. TypeError: type str doesn't define __round__ method
  4. 日常生活中如何获得低咖啡因的茶叶
  5. zookeeper配置
  6. MyBatis使用心得(一)--- 简单介绍
  7. 年度榜单:2013年最流行的15款免费英文字体
  8. apache 错误日志 File does not exist: 解决办法
  9. Qt/Qte/Qtopia三者的区别
  10. 《SQL必知必会(第4版)》 02 检索数据