2012-02-06 63 views
10

我们正在处理MVP模式,我想知道如何处理GUI操作。演示者是否在MVP模式中执行GUI逻辑?

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

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

2)该表格要求用户进行确认,并且当DialogResultOK,然后presenter.Delete(myObject)称为OR presenter.Delete()被称为和Delete方法内的物体是通过调用_view.SelectedRow检索。

你如何处理这些情况?

回答

4

MVP模式应该分开您的逻辑,视图和数据访问。因此,当试图决定应该去哪里时,问问自己是否存在实际的业务逻辑。

你想要你的业务层有关于显示弹出窗口的逻辑吗?可能不会。这只是一个确认消息。您可能希望有一个助手类生成您的风格化弹出式窗口,但这与您的Presenter图层是分开的。

2

选项2.要求确认是演示者不应该担心的UI责任。直到实际对模型做某些事情或直到需要调用一些复杂的业务逻辑时,我才会牵涉到主持人。

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

相关问题