我有一个用 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
因此我的问题是,当我有许多不同类型的更新或事件要处理时,如何正确使用该功能?