处理按钮单击,行双击和其他事件。什么是更好的方法?
将演示者直接访问到View。因此视图可以直接在演示者上调用适当的方法,例如。 Presenter.Save()
或
界面中的事件。
interface ILoginDetailView:
{
event EventHandler Save;
}
查看
private void btnSave_Click(object sender, EventArgs e)
{
Save(this, null)
}
演示
view.Save += new EventHandler(view_Save);
我觉得第二种方法更好,因为它使视图与演示者分离。但是在描述模式的所有文章/论文中,都使用了第一种方法。
答案 0 :(得分:3)
就个人而言,我总是采用第二种方法。一般来说,我不喜欢让观众了解演示者,并且解耦是一个很大的优势。否则,我发现自己正在从视图中获取特定变量的函数。事件模式很好地打破了。
答案 1 :(得分:2)
我也会采用第二种方法,因为正如你所说,将视图与演示者分离,这反过来使这些东西变得可测试。
答案 2 :(得分:2)
在MVPVM(模型视图演示者视图模型)模式中,它表明视图通常与视图紧密耦合。这样,您的视图模型,视图和业务/数据访问层就可以保持解耦。
因此,演示者可以严格允许直接访问视图,而不会对视图模型或视图添加任何责任。
这是一篇很棒的文章,很好地讨论了MVC,MVP,MVVM和MVPVM。
答案 3 :(得分:1)
我认为第一种方法更清洁。
保存只是感觉不像事件。这是一个直接行动。
在MVVM中,你在viewmodel上调用一个命令,在MVC中你在控制器上调用一个动作,在MVP中你在调用者上调用一个方法。
已保存或保存是一个事件,但不是保存。
但这可能是个人偏好的问题。