我正在编写一个 Swing 应用程序,对于我之前的问题,我决定使用Model-View-Presenter模式将用户界面与业务逻辑分开。
当我的应用程序启动时,它会执行以下代码:
Model model = new BasicModel();
Presenter presenter = new Presenter(model);
View view = new SwingView(presenter);
presenter.setView(view);
presenter.init();
它创建了用户界面。事件由 生成View
,并委托给Presenter
。然后Presenter
操作Model
并相应地更新View
。
为了处理一些事件,我需要从用户那里获取更多信息。对于这些事件,我认为 Swing 视图生成一个新JDialog
窗口是合适的。
一种思路让我觉得这可能是原始代码中的合适代码Presenter
:
public void handlePreferences() {
Preferences prefs = view.getPreferences();
model.setPreferences(prefs);
}
也就是说,每个的内容JDialog
应该代表一个不同的对象,该对象应该从 中检索View
并在 中更新Model
。然而,这留下了一个问题:我是否创建一个新Model
的来表示Preferences
对象和一个新Presenter
的用于事件处理JDialog
?
在我看来,创建一个新的Presenter
和Model
内部的View
,例如,如果我想更改 UI 以使用 JSF,我不得不做很多更难移植的工作。
请随时添加评论以进行澄清。