题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
要求:
1、要有联动性,老鼠和人的行为是被动的
2、考虑可扩展行,猫叫声可能会引起其他联动效应
看到这个程序设计题目,我的第一反应是用事件来解决,猫叫触发了事件,引起了老鼠的逃跑,老鼠逃跑又触发了事件导致主人被惊醒,或者是猫叫引起了老鼠逃跑、人醒。所以按照这个思路,我做出了如下的解答。
第一种解决方案用事件来解决:是多级的联动:即:猫叫-》老鼠跑-》人醒
第二种解决方案采用观察者模式:猫叫-》老鼠跑;猫叫-》人醒
首先,将猫、老鼠、和人分别抽象出来为三个类,分别为:Cat、Mouse、People。在Cat类中我们做如下处理:
public class Cat
{
public delegate void Crying(object sender,EventArgs e);//定义一个猫叫委托
public event Crying cry;//定义猫叫事件
public void OnCry(EventArgs e)
{
if(cry!=null)
{
cry(this,e);
}
}
public void StartCrying()//猫叫、触发cry事件
{
MessageBox.Show("猫开始叫了...