![](/img/trans.png)
[英]How to use Java's Observable and Observer with JPA Entities correctly?
[英]How to Use Java Observer's update(Observable, Object) Function?
我在Java中創建了一個基本的MVC模式,該模式使用Observable / Observer類/接口。
Observable Observer Observable/Observer
Model Controller View
View triggers an event to the Controller, when the user interacts with the GUI.
- E.g presses a button, fills in a field, etc.
Model triggers an event to the View when it updates its state.
- E.g when the a button was pressed and the Controller requests new results.
我的問題是關於觀察者功能
update(Observable obs, Object arg);
這是一項功能,但是例如,在View
中我要進行多種更新。 如何優雅地區分搜索結果的更新或其他信息的顯示? 這是兩個完全不同的更新,它們使用來自模型的不同對象。
我的第一個想法是使用Object傳遞一個字符串,該字符串描述所需的更新。
"UpdateResults" "DisplayAdditionalInformation" "AddQuestions"
但這似乎容易出錯並且很丑陋。 我的第二個本能是創建一個將作為對象傳遞的EventObject,但是隨后我必須不斷詢問我正在使用哪種EventObject:
if (arg instanceof ResultEventObject)
// Get results from model
else if (arg instanceof InformationEventObject)
// Get information from model
else if (arg instanceof QuestionsEventObject)
// get questions from model
我的第三個想法是簡單地更新所有內容,但這似乎毫無意義。
我可能無法正確理解Observable / Observer接口,或者我未按照其作者的意圖使用update()。 因此,我的問題是,當我要處理許多不同類型的更新或事件時,如何正確使用update
功能?
您可以根據要偵聽的視圖/模型來創建自己的Listener
接口。 這使您的視圖/模型可以將所需的信息准確傳遞給控制器,並使對控制器進行單元測試變得更加容易。
對於偵聽模型,更新所有內容是最簡單的解決方案,並且除非性能證明是一個問題,否則您可以這樣做。
是的,我認為最好使用監聽器接口
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.