猫大叫,鼠速逃,人醒了
一道.Net程序员面试题的讨论:猫大叫,鼠速逃,人醒了。
(1)联动性
(2)可扩展性
编程实现它。
试了一下.
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
猫大叫,鼠速逃,人醒了相关推荐
- Java猫叫老鼠跑人惊醒_面试题:猫叫、老鼠跑、人醒的一点看法
这些天一直在面试中,做着不同的面试题,唉,悲催 上周做的一道面试题今天正好出现在园里的首页,看了一下这位同学的实现,基本上方向是对的,就是代码上细节没有注意,有一些错误,这里我就写一下我的理解 --- ...
- Java猫叫老鼠跑人惊醒_关于猫叫、老鼠逃跑、人被惊醒的程序设计
题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. 要求: 1.要有联动性,老鼠和人的行为是被动的 2.考虑可扩展行,猫叫声可能会引起其他联动效应 看到这个程序设计题目,我的第一反应是用事件 ...
- 转-观察模式 猫叫鼠跑人醒
转-观察模式 猫叫鼠跑人醒 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. public interface Observer { void Response(); // ...
- 观察者模式和委托实现 - 老鼠跑,猫叫,人醒
老鼠跑,猫叫,人醒是典型的事件联动,解决此种情形,可以利用观察者模式或者事件委托来实现.利用设计模式时要考虑耦合,但利用事件委托的话,就不需要了.因为用委托的话,理解比较容易,这里没有单写,而是将委托 ...
- 关于猫叫、老鼠逃跑、人被惊醒的程序设计
题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. 要求: 1.要有联动性,老鼠和人的行为是被动的 2.考虑可扩展行,猫叫声可能会引起其他联动效应 看到这个程序设计题目,我的第一反应是用事件 ...
- 猫大叫,两只老鼠开始逃跑,主人醒来,宝宝也醒来了并且哭了起来.
using System; namespace DelegateEvent { /** <summary> /// 在Observer Pattern(观察者模式)中,此类作为所有Subj ...
- 【转】细数中国十大名校的IT牛人
[转]细数中国十大名校的IT牛人 "不想成为元帅的士兵不是好士兵"----拿破仑.巴拿马 拨开IT江湖上的恩怨纠缠和刀光剑影,我们发现这些IT人原本有着共同的甜蜜的追忆:大学.那些 ...
- Python如何实现24个微信大群(共万人)同步转发直播?
很多人传言微信网页版(https://wx.qq.com/)接口已经被封了,所以所有的微信都不能登录网页版,这是错误的. 2019年7月微信对网页版微信进行了动态安全策略调整,导致一大批微信号不能登录 ...
- 多态部分作业 3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)
package Day11; /*3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠),等等这样一个的继承层次结构.在基类中,提供对所有的Roden ...
最新文章
- 基于Java语言构建区块链(四)—— 交易(UTXO)
- MVC下实现LayUI分页的Demo
- 设置过mysql远程连接后仍然无法进行远程连接 (mysql mysql报错2003 can't connect)
- python中gmtime的hour错误_python中gmtime的hour错误_在Python中操作日期和时间之gmtime()方法的使用...
- left join 大表放前面_带娃时,走在孩子前面与跟在孩子身后区别很大,很多父母都做错了...
- Welcome to Apache HBase 介绍一
- 南方cass字体样式设置_cass改变字体格式 cass字体样式管理器
- 黑群晖数据迁移白群晖(DS 920+)
- pyaudio 声音处理
- python分秒换算_如何将度分秒转换为度分
- 屏幕录像专家 7.5下载+注册机
- android高仿ios控制中心,仿 iOS 11原生控制中心
- android root 的作用,安卓手机Root好不好?手机Root后有什么好处和影响?
- zblog php 源码,zblog技术导航v2.3全站源码+数据
- pdf文件如何在安卓手机端不用下载在线预览
- 计算机仿真氢光谱实验,氢氘灯光谱 实验报告
- MATLAB 学习笔记:1 定义和使用矩阵
- 互动媒体——自画像+简单音乐可视化
- matlab图形网格线画虚线
- 密室逃脱,玩的就是智慧
热门文章
- 页面上显示的带有乱码名称的js文件是怎么回事?
- fastdfs上传文件时报错No route to host
- TypeError: type str doesn't define __round__ method
- 日常生活中如何获得低咖啡因的茶叶
- zookeeper配置
- MyBatis使用心得(一)--- 简单介绍
- 年度榜单:2013年最流行的15款免费英文字体
- apache 错误日志 File does not exist: 解决办法
- Qt/Qte/Qtopia三者的区别
- 《SQL必知必会(第4版)》	02	检索数据