【发布时间】:2010-10-05 21:43:25
【问题描述】:
我正在编写一个 Swing 应用程序,除了 my previous question,我决定使用 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 中处理事件?
在我看来,在原来的 View 内部创建一个新的 Presenter 和 Model 会迫使我做很多工作,如果我想更改 UI 以使用 JSF,这些工作将更难移植,例如。
请随时添加 cmets 以进行澄清。
【问题讨论】:
标签: java swing design-patterns mvp