猫大叫一声 主人被惊醒 老鼠被下跑 (C#经典案例面试题)

                   猫大叫一声,主人被惊醒,老鼠被下跑。用C#实现这个过程。该题目经常被C#.net面试中设计成重要面试设计题,不管是用C#实现该过程还是抽象成一个game原型,仔细想想这个场景是不是跟老板监视办公室员工玩游戏类似,老板亲自或指派某人或通过软件工具来监视员工打游戏,一端员工开始打游戏,那么老板的那个“监视器”事件被触发,老板就知晓了。

                  该实例场景中有三个对象分别为:主人对象(类),老鼠对象(类),猫对象(类)。这三个对象不同时继承同一父类(不属于 Is  a ……关系),并且他们又不是同时拥有同一子类/方法/属性(不属于Has a ……关系),且场景中又相互有联系。

                 不能把主人和老鼠作为猫的变量成员出现,因为猫并不拥有主人和老鼠两个对象;且不能在猫的任何方法中实例化老鼠和主人,因为猫任何动作都不会产生老鼠和主人。主人类中肯定有一wakeup方法,老鼠类中必须有个Run方法,那么有人肯定会想到猫类中有一个Cry方法,再仔细想想猫仅仅有个Cry方法够不够,谁来触发呢?所以猫类这时候必须拥有一个惊叫的事件来触发让人类、鼠类和猫类关联起来。好了我们分析清楚了,通过猫类的惊叫事件来触发主人的惊醒,老鼠的逃跑。

具体代码如下:

 

//定义猫大叫事件的代理
public delegate void AlertHa

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值