Java的API中有兩組接口類(lèi)是用來(lái)寫(xiě)觀察者模式用的,分別是java.util.Observable、java.util.Observer和java.util.EventListener、Java.util.EventObject。本文并沒(méi)有直接使用到這些API,而是自定義一套觀察者模式中相關(guān)的接口類(lèi),且選取一個(gè)日常生活中常見(jiàn)的一個(gè)事件來(lái)說(shuō)明觀察者模式的使用。
現(xiàn)實(shí)場(chǎng)景:有一名店(Shop),為了財(cái)物安全起見(jiàn),除了在店內(nèi)裝了攝像頭(Camera)來(lái)監(jiān)控店內(nèi)的總?cè)藬?shù)外,還聘請(qǐng)了一些門(mén)衛(wèi)(Camera)守在店門(mén)口,對(duì)來(lái)訪的客人進(jìn)行實(shí)名登記,即客人進(jìn)入時(shí)要記名,客人出店時(shí)也要記錄其離去。
//Watcher接口:
//Watchable類(lèi):
//Shop類(lèi),繼承了Watchable類(lèi),Shop內(nèi)有什么動(dòng)靜,會(huì)通過(guò)調(diào)用父類(lèi)的notifyWatcher()方法通知觀察者。
//Guard(門(mén)衛(wèi)類(lèi))和Camera(攝像頭類(lèi))都屬于本例中的觀察者,負(fù)責(zé)觀察店內(nèi)外的動(dòng)靜,
//測(cè)試類(lèi)代碼:
本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!http://www.tkk7.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)
歡迎光臨我的博客,本博客文章均為個(gè)人原創(chuàng),歡迎提出寶貴的意見(jiàn)和建議!(容新華)