2012-02-06 66 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無效。在我看來,這隻會造成不必要的觀點/主持人喋喋不休。

相關問題