Observable與Observer物件

這一陣子為了解決Java視窗的設計,重新翻閱了Java 2教學手冊-JDK 5上的模型-觀點-控制(MVC)架構,然後讀到了之前忽略掉的文件/觀點結構,這在第十五章有介紹,不過ㄚ琪讀完,實作完程式後,還是留有很多的模糊感覺,只好繼續搜尋相關的教學。

在崑山科大資管系的游峰碩老師個人網頁中,他有教授 物件導向設計,有這樣一個主題:

行為樣式

  1. Observer 樣式。簡單的範例
    一個使用Observer樣式撰寫的彈跳球例子: 彈跳球

這裡頭的Observer的定義是這樣:

Observer樣式定義了一種一對多的依賴關係。讓多個觀察者物件同時監聽某一個主題物件(subject)。當subject發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。

從AWT1.1開始,Java視窗系統的事件模型(event model)都採用Observer樣式。
Java本身就有定義Observer介面。所以我們可以直接使用它,不需要再定義。任何實作此介面的類別都是一個觀察者的角色。

從這一段看到了,原來Java的視窗是用這樣的模式,並不是MVC的架構,也難怪Java 2教學手冊-JDK 5會在建立視窗這一章提到,不過ㄚ琪那時讀來並不懂。

另外提到了java.util.Observable類別就是樣式中提到的subject。也就是被觀察者。這個類別提供了許多有關管理觀察者的方法,以及通知(notify)觀察者的機制等等。

機制是這樣:

程式要自學真的很累,如果有好的書或是好的教師教,真的就有如神助了。

 

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *