天天看點

.NET簡談觀察者模式

觀察者模式想必搞程式開發的都聽說過,今天我也來簡單的總結一下本人在程式開發過程中是怎麼使用觀察者模式的;希望給大家帶來點新的想法,如果哪位高手看到了也不要嘲笑啊;呵呵,最求技術的人,始終都是為了技術而學技術,目的隻有一個一起追求技術的最高境界;

觀察者模式是設計模式裡經常被用到的一種,什麼叫觀察者模式,字面了解就是一個或多個對象觀察某個對象這種觀察是有目的地,當被觀察者發生某種事件時能準确的回報到外界,通知大家你發生了什麼;尤其是在今天面向對象程式設計的不斷成熟,什麼都講究抽象将重複勞動省到最少,方法成員都以類為容器封裝;這是一種好的程式設計規則,就好比我們所生存的大自然壞境一樣,汽車與人都是獨立的生存個體,大家互不幹擾,我不需要知道我存在的意義,存在的意義是對别人而言;

進入主題,上面剛才講到了汽車與人,打個比方當我們乘坐公共汽車的時候,我并不認識路我需要車到的時候通知乘客你到了哪個站,我們好下車;在我們做開發的時候經常會遇到這種情況,我要某個按鈕被滑鼠點選了之後彈出一個文本框出來,等等;繼續汽車與人的比方,當汽車到站後通過什麼方式通知大家你到某某站了呢,這就涉及到汽車這麼一個實體是否具有到站事件,如果沒有可能他永遠都不會聽,請看圖一:

<a href="http://blog.51cto.com/attachment/201104/142127634.jpg" target="_blank"></a>

上是一個汽車和四個乘客實體圖,當汽車到達某個站的時候應該告訴乘客到了哪個站了讓乘客判斷一下是否是自己要下的站,請看圖二:

圖上是汽車到了站點1時通知乘客,并将到站的資訊傳遞給乘客讓乘客判斷是否下車,如果某乘客要下車可以通知駕駛員我要下車,請看圖三:

<a href="http://blog.51cto.com/attachment/201104/142224718.jpg" target="_blank"></a>

乘客判斷消息是否是自己要下的站,如果是發出消息給汽車駕駛員,我們這裡把駕駛員和汽車當成一體的由汽車為統稱;汽車接收到乘客的下車資訊後打開車門讓乘客下車;我們隻要把圖的資訊落實到代碼上就OK了,請看代碼圖:

這是汽車類的代碼段

<a href="http://blog.51cto.com/attachment/201104/142337304.jpg" target="_blank"></a>

這是乘客的代碼段;

<a href="http://blog.51cto.com/attachment/201104/142517477.jpg" target="_blank"></a>

觀察者模式大概就講完了,希望對您有幫助;

 本文轉自 王清培 51CTO部落格,原文連結:http://blog.51cto.com/wangqingpei557/541396,如需轉載請自行聯系原作者

繼續閱讀