新聞中心
觀察者模式(Observers) 定義了對(duì)象之間的一對(duì)多依賴,這個(gè)一來,當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí),它所有的依賴者都會(huì)收到通知并自動(dòng)更新,主題和觀察者定義了一對(duì)多的關(guān)系 觀察者依賴于主題,只要主題狀態(tài)一有改變,觀察者就會(huì)接受到通知 根據(jù)通知的風(fēng)格。

當(dāng)兩個(gè)對(duì)象之間松耦合,它們依然可以交互,但不太清除彼此的細(xì)節(jié)。觀察者模式提供了一種對(duì)象設(shè)計(jì),讓主題和觀察者之間松耦合。主題只知道觀察者實(shí)現(xiàn)了某個(gè)接口(也就是Observer接口)主題不需要知道觀察者的具體類是誰,做了些什么或其他的任何細(xì)節(jié)。任何時(shí)候我們可以添加新的觀察者。因?yàn)橹黝}唯一依賴的東西是一個(gè)實(shí)現(xiàn)Observer接口的對(duì)象列表。
松耦合的設(shè)計(jì)之所以能讓我們建立有彈性的OO系統(tǒng),能夠應(yīng)對(duì)變化,是因?yàn)閷?duì)象之間的互相依賴降到了***。所以我們?yōu)榱私换?duì)象之間的松耦合設(shè)計(jì)而在努力。
筆者學(xué)習(xí)過很多觀察者模式的文章,也在項(xiàng)目中使用過,下面我們通過一個(gè)Dome慢慢的認(rèn)識(shí)體會(huì)設(shè)計(jì)模式的思想。
Demo - 氣象監(jiān)測(cè)應(yīng)用系統(tǒng)
氣象觀測(cè)局專利申請(qǐng)?jiān)赪eatherData對(duì)象中,由WeatherData負(fù)責(zé)追蹤天氣狀態(tài)。成功以后在氣象監(jiān)測(cè)局顯示以供廣大網(wǎng)民查詢并提供接口給大型網(wǎng)站顯示,這時(shí)候訪問關(guān)系是,
注意箭頭的方向,訪問取得數(shù)據(jù)的壓力都?jí)涸跉庀缶种?,久而久之根?jù)訪問量的遞增氣象局不定的添加服務(wù)器,負(fù)載均衡,緩沖等技術(shù)解決。
而知,有時(shí)候,如果您發(fā)現(xiàn)項(xiàng)目中后期維護(hù)的問題太多,那就回到起點(diǎn)從新思考問題。每次網(wǎng)民通過各大合作方網(wǎng)站訪問數(shù)據(jù),各大合作方又來訪問氣象局得到數(shù)據(jù)。這無形中讓壓力增加。那么我們?nèi)绾螌毫Ψ植?,減少無謂的浪費(fèi)。
這時(shí)候讓我們回到觀察者模式中的思想,那就是“你們不要來訪問我,如果我的數(shù)據(jù)發(fā)生改變我會(huì)通知你們”。講到這里請(qǐng)看新的設(shè)計(jì)關(guān)系圖:
看看此時(shí)的關(guān)系設(shè)計(jì)圖表中,合作方不再?gòu)臍庀缶肢@取到數(shù)據(jù),而使用本地?cái)?shù)據(jù)儲(chǔ)存方式,當(dāng)氣象局?jǐn)?shù)據(jù)發(fā)生變化更新各合作方,則將各個(gè)合作方的數(shù)據(jù)更新到***,而氣象局的數(shù)據(jù)是主題,而合作方便是也就是觀察者,兩方便是一對(duì)多的關(guān)系,氣象局不需要知道合作方取了數(shù)據(jù)如何使用,只要在獲得到新的數(shù)據(jù)后更新即可。
接近尾聲的時(shí)候,這次就不貼代碼了,講到這里實(shí)現(xiàn)起來該DOME肯定沒問題,這次雖然短短的些字,但確實(shí)本人不才些經(jīng)驗(yàn)和悟性,其實(shí)我這整篇文章想表達(dá)的是,設(shè)計(jì)模式表達(dá)的一種思想,是從項(xiàng)目業(yè)務(wù)邏輯中和后期變化中去思考。
【編輯推薦】
- 軟件項(xiàng)目管理總體流程設(shè)計(jì)
- 項(xiàng)目組合管理中的十大***實(shí)踐
- 應(yīng)用軟件項(xiàng)目的配置管理實(shí)例
網(wǎng)頁(yè)題目:設(shè)計(jì)模式思想換位中的另類觀察者
文章分享:http://fisionsoft.com.cn/article/ccessjh.html


咨詢
建站咨詢
