我有一个使用可观察/观察员类/接口在Java中创建了一个基本的MVC模式。
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
的例子。 如何优雅地更新,比方说,我的搜索结果或其他信息显示区分? 这些是使用不同的对象从模型两个完全不同的更新。
我的第一个想法是使用对象来传递这将说明需要什么更新的字符串。
"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
我的第三个想法是简单地更新了一切,但似乎毫无意义的低效。
我可能不正确地理解可观测/ Observer接口或者我没有使用更新(),因为它意在通过它的作者。 所以我的问题,我该如何使用update
功能正常时,我有很多不同类型的更新或事件来处理的?