我们正在使用MVP模式,我想知道如何处理GUI操作。
例如,当用户想要从网格中删除行时,用户按下删除按钮。此时你可以做两件事:
1)致电_presenter.DeleteRow()
,然后主持人致电_view.SelectedRow
。然后,演示者调用view.AskUserForConfirmation()
,当它返回DialogResult.OK
时,演示者实际上删除了底层对象并刷新了网格。
2)表单要求用户进行确认,当DialogResult
为OK
时,则调用presenter.Delete(myObject)
或调用presenter.Delete()
并在Delete
内方法通过调用_view.SelectedRow
来检索对象。
你如何处理这些情况?
答案 0 :(得分:4)
MVP模式应该将您的逻辑,视图和数据访问分开。因此,在尝试确定应该采取的措施时,请问自己,您尝试做的事情是否存在实际的业务逻辑。
您希望您的业务层有关于显示弹出窗口的逻辑吗?可能不是。这只是一条确认信息。您可能希望有一个生成风格化弹出窗口的辅助类,但它与Presenter层分开。
答案 1 :(得分:2)
选项2.要求确认是演示者不应该担心的UI责任。在实际对模型执行某些操作之前,或者在需要调用某些复杂的业务逻辑之前,我不介绍演示者。
这并不意味着选项1无效。在我看来,这只是创造了不必要的观点/主持人喋喋不休。