演示者是否在MVP模式中执行GUI逻辑?

时间:2012-02-06 15:35:18

标签: c# winforms mvp

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

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

1)致电_presenter.DeleteRow(),然后主持人致电_view.SelectedRow。然后,演示者调用view.AskUserForConfirmation(),当它返回DialogResult.OK时,演示者实际上删除了底层对象并刷新了网格。

2)表单要求用户进行确认,当DialogResultOK时,则调用presenter.Delete(myObject)或调用presenter.Delete()并在Delete内方法通过调用_view.SelectedRow来检索对象。

你如何处理这些情况?

2 个答案:

答案 0 :(得分:4)

MVP模式应该将您的逻辑,视图和数据访问分开。因此,在尝试确定应该采取的措施时,请问自己,您尝试做的事情是否存在实际的业务逻辑。

您希望您的业务层有关于显示弹出窗口的逻辑吗?可能不是。这只是一条确认信息。您可能希望有一个生成风格化弹出窗口的辅助类,但它与Presenter层分开。

答案 1 :(得分:2)

选项2.要求确认是演示者不应该担心的UI责任。在实际对模型执行某些操作之前,或者在需要调用某些复杂的业务逻辑之前,我不介绍演示者。

这并不意味着选项1无效。在我看来,这只是创造了不必要的观点/主持人喋喋不休。