視圖應該在其接口中沒有特定事件,並調用演示者純方法來處理事件並且沒有任何官方EventHandler?例如Webforms MVP被動視圖 - 事件處理
// ASPX
protected void OnSaveButtonClicked(object sender, EventArgs e)
{
_Presenter.OnSave();
}
還是應該的觀點已經在它的接口定義和鏈接那些高達明確地控制頁面上的事件事件事件處理器
// View
public interface IView
{
...
event EventHandler Saved;
...
}
// ASPX Page implementing the view
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
SaveButton.Click += delegate { Saved(this, e); };
}
// Presenter
internal Presenter(IView view,IRepository repository)
{
_view = view;
_repository = repository;
view.Saved += Save;
}
第二個好像全世界很多管道代碼添加遍。
我的目的是瞭解每種風格的好處,而不僅僅是一個全面的答案。我的主要目標是清晰度和高價值的可測性。整體可測試性非常重要,但我不會犧牲設計的簡單性和清晰性,以便能夠添加另一種類型的測試,這種測試不會導致對測試用例的增益過高,這種情況已經可以通過更簡單的設計實現。如果一個設計選擇不能提供更多的可測試性,請包含一個現在可以提供的測試類型的示例(僞代碼很好),以便我可以做出決定,如果我足夠重視這種額外測試類型的話。謝謝!
更新:我的問題是否需要進一步澄清?