關於貓叫 老鼠逃跑 人被驚醒的程式設計

2021-09-01 13:45:57 字數 2644 閱讀 5563

要求:

1、要有聯動性,老鼠和人的行為是被動的

2、考慮可擴充套件行,貓叫聲可能會引起其他聯動效應

看到這個程式設計題目,我的第一反應是用事件來解決,貓叫觸發了事件,引起了老鼠的逃跑,老鼠逃跑又觸發了事件導致主人被驚醒。所以按照這個思路,我做出了如下的解答。

首先,將貓、老鼠、和人分別抽象出來為三個類,分別為:cat、mouse、people。在cat類中我們做如下處理:?

publicclasscat

}

publicvoidstartcrying()//貓叫、觸發cry事件

}

?publicclassmouse

}

publicvoidstartruning(cat c)

publicvoidc_cry(objectsender,evnetargs e)//老鼠在逃跑時又觸發了人被驚醒事件

}

publicclassperson

publicvoidm_run(objectsender,eventargs e)

}

?btntest_click(objectsender, eventargs e)

實驗效果依次如下:

下面再通過另乙個方式來解決這個問題。

observer(觀察者模式)

首先我們需要新建兩個介面:?

publicinte***ceobserver

publicinte***cesubject

?publicclasscat:subject

void addobserver(observer obj)//實現新增觀察著物件的方法

void cry()//貓叫了,並通知所有的觀察者,作出相應的反應

}

}

?publicclassmouse:observer

publicvoidresponse()

}

?publicclasspeople:observer

public void respone()

}

?btn_click(object sender,eventargs e)

貓叫,老鼠逃,人醒

using system using system.collections.generic using system.text namespace delegateevent public string name set public delegate void calleventhandler o...

C 的委託及事件 貓叫人醒老鼠跑

原文 昨天進行了一下培訓,講解了一下委託跟事件的應用,說實話這個東西聽起來還是一頭霧水,雖然學會怎麼用,但是還沒搞明白需要在什麼時候用到這個,後來我們經理給我舉了個例子,讓我做乙個經典的委託和事件的例子,就是貓叫人醒老鼠跑。首先很簡單,需要定義貓,人跟老鼠三個類,分別命名為cat,people,mo...

觀察者模式 貓叫了,老鼠跑了,主人醒了

現在很多程式設計師在面試的時候都遇到過這個問題 貓叫了,老鼠跑了,主人醒了.實現乙個連動效果,我也遇到過,感覺這道面試題目挺經典的,挺考驗物件導向設計 ood 的能力,雖然是個很簡單的例子,但要考慮到程式的擴充套件性。比如說有新的需求,要求後面再加上狗叫了,那些寫的過死且繁瑣的 就要來次大 了 再比...