我们正在使用MVP模式,我想知道如何处理GUI操作。
例如,当用户想要从网格中删除一行时,用户按下delete按钮。在这一点上,您可以做两件事:
1)调用_presenter.DeleteRow()
,然后presenter调用_view.SelectedRow
。然后presenter调用view.AskUserForConfirmation()
,当它返回DialogResult.OK
时,presenter实际上删除了底层对象并刷新了网格。
2)表单要求用户进行确认,当DialogResult
为OK
时,则调用presenter.Delete(myObject)
或presenter.Delete()
,在Delete
方法中通过调用_view.SelectedRow
来检索对象。
你是如何处理这种情况的?
发布于 2012-02-06 19:33:04
MVP模式应该将您的逻辑、视图和数据访问分开。因此,当试图决定某件事应该走向何方时,问问自己,在你试图做的事情中是否有实际的业务逻辑。
您希望您的业务层具有有关显示弹出窗口的逻辑吗?可能不会。这只是一条确认消息。你可能想要一个助手类来生成你的样式弹出窗口,但这是从你的Presenter层分离出来的。
发布于 2012-02-06 17:05:28
选项2.请求确认是演示者不需要担心的UI责任。在实际对模型执行某些操作之前,或者在需要调用一些复杂的业务逻辑之前,我不会让演示者参与进来。
这并不意味着选项1是无效的。在我看来,这只会造成不必要的视图/演示者闲聊。
https://stackoverflow.com/questions/9162581
复制相似问题