問題:貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。
分析:從這句話,我們可以獲得兩個資訊:
1)涉及到三個角色,貓,老鼠和主人。因此,顯然要定義三個類
cat,
mouse
和master
。至於這三個類之間的關係,看你如何選擇實現的方式;
2)當貓發出乙個動作時,老鼠和主人都會做出自己的反應。因此,第乙個能夠想到的實現方式是事件委託方式。但是設計模式中,有乙個觀察者模式,也能夠達到這個要求。
解決:這樣,或是用事件委託方式,或是用觀察者模式。
方案一:觀察者模式。
using system;
using system.collections;
public inte***ce observer
public inte***ce subject
public class cat : subject
set
}public cat()
public void aimat(observer ob)
public void cryed()
}}public class mouse : observer
set
}public mouse(string name, subject su)
public void response()
}public class master : observer
public void response()
}class program
}
說明:……
方案二:事件委託。
using system;
public delegate void subeventhandler();
public abstract class subject
}}public class cat : subject
}public abstract class observer
public abstract void response();
}public class mouse : observer
set
}public mouse(string name, subject su)
: base(su)
public override void response()
}public class master : observer
public override void response()
}class program
}
說明:……
貓 老鼠 主人聯動問題
程式設計 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒 要求 1.要有聯動性,老鼠和主人的行為是被動的。2.考慮可擴充套件性,貓的叫聲可能引起其他聯動效應。整個思路是採用訂閱者設計模式 觀察者模式 具體怎麼叫就隨大家想法。我採用windows的應用程式講解下面是發布者抽象模組using system...
貓吃老鼠問題
今天在看雪看到這個 貓吃老鼠問題 的帖子,和當初學程式設計時的乙個叫做 約瑟夫環問題 類似。自己按照數學的方法分析了一下,得到乙個數學演算法。問題描述 現有n個老鼠圍成一圓圈,有乙隻貓從任意位置開始吃老鼠,每次都隔乙個老鼠吃,請給出最後乙個老鼠的編號?題目要求是任給老鼠數n,輸出貓最後吃的老鼠的編號...
貓吃老鼠演算法
曾經一道面試題,大概意思是 有乙隻很強大的貓咪,喜歡把抓來的n只老鼠們排成乙個佇列,然後設乙個步長值k,先吃掉第一隻後,再每隔k只再吃,吃完一輪後再按上面規則重新開始下一輪,直到剩下最後乙隻老鼠為止,貓咪為了保持生態平衡就放了這只老鼠 有只老鼠很聰明,他能很準確的計算出最後放生的位置,請用程式寫出來...