Java 設計模式(觀察者模式)
觀察者模式定義 了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使他們能夠自己更新自己。
在現實生活中,有許多觀察者模式應用的場景,例如,我們去售樓處看房,然後留下電話號碼,並且表示自己對那套房子心意。然後回去了。如果房子價格有優惠了我們就會接到簡訊或電話。這就是典型的觀察者模式。
也可以這樣理解當一個物件的狀態改變時會更新另一組物件。


Subject類,可翻譯成為主題或抽象通知者,一般用一個抽象類或者一個介面實現。它把所有對觀察者物件的引用儲存在一個集合裡,每個主題都可以有任何數量的觀察者。抽象主題提供一個介面,可以增加和刪除觀察者物件。

Observer類,抽象觀察者,為所有的具體觀察者定義一個介面,在得到主題的通知時更新自己,這個介面叫做更新介面。抽象觀察者一般用一個抽象類或者一個介面實現,更新介面通常包含一個Update()方法,這個方法叫做更新方法。

圖
ConcreteSubject類,叫做具體主題或具體通知者,將有關狀態存入具體觀察者物件,在具體主題的內部狀態改變時,給所有登記過的觀察者發出通知。
這裡絕通知曉其他成員有關九尾的蹤跡。

ConcreteObserver類,具體觀察者,實現抽象觀察者角色所要求的更新介面,以便使本身的狀態與主題狀態相協調,具體觀察者角色可以儲存一個指向具體主題物件的引用。

測試類