|
觀察者模式想必搞程序開發(fā)的都聽說過,今天我也來簡(jiǎn)單的總結(jié)一下本人在程序開發(fā)過程中是怎么使用觀察者模式的;希望給大家?guī)睃c(diǎn)新的想法,如果哪位高手看到了也不要嘲笑啊;呵呵,追求技術(shù)的人,始終都是為了技術(shù)而學(xué)技術(shù),目的只有一個(gè),一起追求技術(shù)的最高境界。
觀察者模式是設(shè)計(jì)模式里經(jīng)常被用到的一種,什么叫觀察者模式,字面理解就是一個(gè)或多個(gè)對(duì)象觀察某個(gè)對(duì)象,這種觀察是有目的的,當(dāng)被觀察者發(fā)生某種事件時(shí),能準(zhǔn)確的反饋到外界,通知大家你發(fā)生了什么;尤其是在今天面向?qū)ο缶幊痰牟粩喑墒欤裁炊贾v究抽象,將重復(fù)勞動(dòng)省到最少,方法成員都以類為容器封裝;這是一種好的編程規(guī)則,就好比我們所生存的大自然壞境一樣,汽車與人都是獨(dú)立的生存?zhèn)€體,大家互不干擾,我不需要知道我存在的意義,存在的意義是對(duì)別人而言。
進(jìn)入主題,上面剛才講到了汽車與人,打個(gè)比方當(dāng)我們乘坐公交車的時(shí)候,我并不認(rèn)識(shí)路,我需要車到的時(shí)候通知乘客你到了哪個(gè)站,我們好下車;在我們做開發(fā)的時(shí)候經(jīng)常會(huì)遇到這種情況,我要某個(gè)按鈕被鼠標(biāo)點(diǎn)擊了之后彈出一個(gè)文本框出來,等等;繼續(xù)汽車與人的比方,當(dāng)汽車到站后通過什么方式通知大家你到某某站了呢,這就涉及到汽車這么一個(gè)實(shí)體是否具有到站事件,如果沒有可能他永遠(yuǎn)都不會(huì)聽,請(qǐng)看圖一:
圖上是一個(gè)汽車和四個(gè)乘客實(shí)體圖,當(dāng)汽車到達(dá)某個(gè)站的時(shí)候應(yīng)該告訴乘客到了哪個(gè)站了,讓乘客判斷一下是否是自己要下的站,請(qǐng)看圖二:
圖上是汽車到了站點(diǎn)1時(shí)通知乘客,并將到站的信息傳遞給乘客讓乘客判斷是否下車,如果某乘客要下車可以通知駕駛員我要下車,請(qǐng)看圖三:
乘客判斷消息是否是自己要下的站,如果是發(fā)出消息給汽車駕駛員,我們這里把駕駛員和汽車當(dāng)成一體的,由汽車為統(tǒng)稱;汽車接收到乘客的下車信息后打開車門讓乘客下車;我們只要把圖的信息落實(shí)到代碼上就OK了,請(qǐng)看代碼圖:
NET技術(shù):.NET簡(jiǎn)談?dòng)^察者模式,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。