3

处理按钮点击、行双击等事件。什么是更好的方法?

演示者直接访问查看。所以视图可以直接在presenter上调用相应的方法,例如。Presenter.Save()

或者

界面中的事件。

interface ILoginDetailView:
{
   event EventHandler Save;        
}

看法

private void btnSave_Click(object sender, EventArgs e)
{
   Save(this, null)
}

主持人

view.Save += new EventHandler(view_Save);

我觉得第二种方法更好,因为它使视图与演示者分离。但是在所有描述该模式的文章/论文中,都使用了第一种方法。

4

4 回答 4

3

就个人而言,我总是选择第二种方法。一般来说,我不喜欢让视图知道演示者,而解耦是一个很大的优势。否则,我发现自己在制作函数,从视图中获取特定变量。事件模式很好地打破了这一点。

于 2012-09-11T16:17:17.717 回答
2

我也将采用第二种方法,因为正如您所说,它将视图与演示者分离,这反过来又使这些东西可测试。

于 2012-09-11T15:53:12.817 回答
2

在 MVPVM(模型视图演示者视图模型)模式中,它声明视图通常与您的视图紧密耦合。这允许您的视图模型、视图和业务/数据访问层保持分离。

所以再一次,演示者可以严格地允许直接访问视图,而无需为您的视图模型或视图增加责任。

MVPVM 设计模式

这是一篇很棒的文章,很好地讨论了 MVC、MVP、MVVM 和 MVPVM。

于 2013-07-19T04:16:49.873 回答
1

我认为第一种方法更清洁。

Save感觉不像是一个事件。这是一个直接的动作。

在 MVVM 中,您在视图模型上调用命令,在 MVC 中,您在控制器上调用动作,在 MVP 中,您在演示者上调用方法。

SavedSaving是一个事件,但不是Save

但这可能是关于个人喜好的问题。

于 2012-09-11T16:17:38.730 回答