要求:
1、要有聯動性,老鼠和人的行為是被動的
2、考慮可擴充套件行,貓叫聲可能會引起其他聯動效應
看到這個程式設計題目,我的第一反應是用事件來解決,貓叫觸發了事件,引起了老鼠的逃跑,老鼠逃跑又觸發了事件導致主人被驚醒。所以按照這個思路,我做出了如下的解答。
首先,將貓、老鼠、和人分別抽象出來為三個類,分別為:cat、mouse、people。在cat類中我們做如下處理:?
public
class
cat
}
public
void
startcrying()
//貓叫、觸發cry事件
}
?public
class
mouse
}
public
void
startruning(cat c)
public
void
c_cry(
object
sender,evnetargs e)
//老鼠在逃跑時又觸發了人被驚醒事件
}
public
class
person
public
void
m_run(
object
sender,eventargs e)
}
?btntest_click(
object
sender, eventargs e)
實驗效果依次如下:
下面再通過另乙個方式來解決這個問題。
observer(觀察者模式)
首先我們需要新建兩個介面:?
public
inte***ce
observer
public
inte***ce
subject
?public
class
cat:subject
void addobserver(observer obj)
//實現新增觀察著物件的方法
void cry()
//貓叫了,並通知所有的觀察者,作出相應的反應
}
}
?public
class
mouse:observer
public
void
response()
}
?public
class
people: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 的能力,雖然是個很簡單的例子,但要考慮到程式的擴充套件性。比如說有新的需求,要求後面再加上狗叫了,那些寫的過死且繁瑣的 就要來次大 了 再比...