我有一個使用Observable/Observer類/接口的Java創建的基本MVC模式。如何使用Java Observer的更新(Observable,Object)函數?
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
函數?
實施/可觀察模式是在Java中很老,情誼,JDK 1.0。現在使用參數化創建自定義實現更加有用。 – nkukhar
@NKukhar請擴展您的評論關於paramterization。 – Thufir
@Thufir看看這個問題答案:http://stackoverflow.com/questions/4283304/having-trouble-getting-the-observer-pattern-working – nkukhar