這一陣子為了解決Java視窗的設計,重新翻閱了Java 2教學手冊-JDK 5上的模型-觀點-控制(MVC)架構,然後讀到了之前忽略掉的文件/觀點結構,這在第十五章有介紹,不過ㄚ琪讀完,實作完程式後,還是留有很多的模糊感覺,只好繼續搜尋相關的教學。
在崑山科大資管系的游峰碩老師個人網頁中,他有教授 物件導向設計,有這樣一個主題:
行為樣式
- 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)觀察者的機制等等。
機制是這樣:
程式要自學真的很累,如果有好的書或是好的教師教,真的就有如神助了。