视图应该在其接口中没有特定事件,并调用演示者纯方法来处理事件并且没有任何官方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;
}
第二个好像全世界很多管道代码添加遍。
我的目的是了解每种风格的好处,而不仅仅是一个全面的答案。我的主要目标是清晰度和高价值的可测性。整体可测试性非常重要,但我不会牺牲设计的简单性和清晰性,以便能够添加另一种类型的测试,这种测试不会导致对测试用例的增益过高,这种情况已经可以通过更简单的设计实现。如果一个设计选择不能提供更多的可测试性,请包含一个现在可以提供的测试类型的示例(伪代码很好),以便我可以做出决定,如果我足够重视这种额外测试类型的话。谢谢!
更新:我的问题是否需要进一步澄清?