設計模式之觀察者模式
1、觀察者模式的簡單介紹:
a、核心:
- 觀察者模式主要用於 1 : N 的通知中。當一個對象(目標對象 Subject 或者 Objservable )的狀態變化時,他需要及時告知一系列的對象(觀察者對象,Observer),令他們做出響應。
b、通知觀察者的方式:
推:每次都會把通知以廣播的方式發送給所有的觀察者,所有的觀察者只能夠被動接收。
拉:觀察者只要知道有情況即可。至於什麽時候獲取內容,獲取什麽內容,都可以自主決定。
2、簡單的代碼演示:
a、Subject 類為目標對象類(相當於一個容器,裏面存放了一些的觀察者對象),提供了在主題對象中註冊觀察者對象的方法。ConcreteSubject 為具體的主題對象,裏面提供了一個 stateCode 的成員變量,並且在 setStateCode() 方法中使用父類的 notifyAllObserver() 方法。
b、創建 Observer 接口,即抽象的觀察者類,並創建一個實現了該接口的 ConcreteObserver 類。(在該類中也有一個 stateCode 的成員變量)
c、看看 Client16 測試類中的輸出結果以及示例代碼的類圖關系。
3、使用 javase 提供的 java.util.Observable 和 java.util.Observer 來實現觀察者模式:
-Observable 類是目標類,Observer 接口是觀察者接口,ConcreteSubject 是具體目標類,ConcreteObserver 是具體觀察者類,使用 已經封裝好的方法來實現我們的觀察者模式。
4、開發中常見的場景:
- 聊天室程序的,服務器轉發給所有客戶端
- 網絡遊戲(多人聯機對戰)場景中,服務器將客戶端的狀態進行分發
- 郵件訂閱
- Servlet 中,監聽器的實現
- Android 中,廣播機制
- 京東商城中,群發某商品的打折信息
本文出自 “12392717” 博客,請務必保留此出處http://12402717.blog.51cto.com/12392717/1930067
設計模式之觀察者模式