首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

觀察者模式實作:Java 內建 Observable 與 Observer 的應用

     編輯:Java 相關知識

模式動機:狀態變更的自動通知

觀察者模式解決「一組物件需在另一物件狀態改變時自動更新」的問題。典型場景如 MVC 的 Model-View、文檔-視圖架構。Java 在 java.util 提供內建支援:Observable 管理觀察者清單,Observer 定義 update() 回呼。

關鍵機制:setChanged() 與 notifyObservers()

Observable 預設不通知觀察者,必須先呼叫 setChanged() 設定「已變更」旗標,再呼叫 notifyObservers() 觸發各觀察者的 update()。範例 BoxObserver 建立一個 BoxObservable(繼承 Observable 並覆寫 notifyObservers() 中呼叫 setChanged()),每個 OCBox(畫布方塊)實作 Observer 並向其註冊。

互動流程與動態替換

  • 滑鼠點擊某方塊 → 呼叫 notifier.notifyObservers(this)
  • 所有方塊收到 update(),檢查是否鄰近被點擊方塊
  • 若鄰近則複製其顏色並重繪

通知機制對具體 Observable 實作無依賴,未來可動態替換通知策略(如改用不同衍生類),體現模式「封裝變化」的精髓。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved