Presenter在MVP模式中执行GUI逻辑吗?

10

我们正在使用MVP模式,我在想如何处理GUI操作。

例如,当用户想要从网格中删除一行时,用户会按下删除按钮。此时你可以做两件事:

1)调用_presenter.DeleteRow(),然后Presenter调用_view.SelectedRow。然后Presenter调用view.AskUserForConfirmation(),当返回DialogResult.OK时,Presenter实际上删除底层对象并刷新网格。

2)窗体要求用户确认,当DialogResultOK时,则调用presenter.Delete(myObject)presenter.Delete()被调用,并在Delete 方法中通过调用_view.SelectedRow检索对象。

你如何处理这些情况?

2个回答

4

MVP模式旨在分离逻辑、视图和数据访问。因此,在尝试确定某个内容应该放在哪里时,请问自己是否存在实际的业务逻辑。

你想让你的业务层具有关于显示弹出窗口的逻辑吗?很可能不是。这只是一个确认消息。你可能希望有一个帮助类来生成你的样式化弹出窗口,但这与你的Presenter层是分离的。


2
选项2。要求确认是UI的职责,不应该让Presenter担心。在实际对模型进行操作之前,或者需要调用某些复杂的业务逻辑之前,我不会让Presenter参与其中。
这并不意味着选项1无效。在我看来,它只会创建不必要的视图/Presenter交互。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接