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