Java的API中有兩組接口類是用來寫觀察者模式用的,分別是java.util.Observable、java.util.Observer和java.util.EventListener、Java.util.EventObject。本文并沒有直接使用到這些API,而是自定義一套觀察者模式中相關的接口類,且選取一個日常生活中常見的一個事件來說明觀察者模式的使用。
現實場景:有一名店(Shop),為了財物安全起見,除了在店內裝了攝像頭(Camera)來監控店內的總人數外,還聘請了一些門衛(Camera)守在店門口,對來訪的客人進行實名登記,即客人進入時要記名,客人出店時也要記錄其離去。
//Watcher接口:


















//Watchable類:










































//Shop類,繼承了Watchable類,Shop內有什么動靜,會通過調用父類的notifyWatcher()方法通知觀察者。







































//Guard(門衛類)和Camera(攝像頭類)都屬于本例中的觀察者,負責觀察店內外的動靜,




















































//測試類代碼:










































運行測試類,結果如下:
1
門衛一號向管理處匯報:“BlogJava”已進入本店!
2
攝像頭1號監測到現在店內總人數為1人
3
門衛一號向管理處匯報:“JavaEye”已進入本店!
4
攝像頭1號監測到現在店內總人數為2人
5
門衛一號向管理處匯報:“BlogJava”已走出本店!
6
攝像頭1號監測到現在店內總人數為1人
7
攝像頭1號監測到現在店內總人數為2人
8
攝像頭1號監測到現在店內總人數為1人
9
攝像頭1號監測到現在店內總人數為2人
10
門衛二號向管理處匯報:“容新華”已進入本店!
11
攝像頭1號監測到現在店內總人數為3人
12
門衛二號向管理處匯報:“CSDN”已走出本店!
13
攝像頭1號監測到現在店內總人數為2人

2

3

4

5

6

7

8

9

10

11

12

13

本文原創,轉載請注明出處,謝謝!http://www.tkk7.com/rongxh7(心夢帆影JavaEE技術博客)