如何在MVP方案中的演示者和视图之间进行通信?

时间:2012-05-12 05:04:33

标签: winforms model-view-controller design-patterns mvp passive-view

基本上我知道有两种选择。

第一个是视图公开演示者应该订阅的通知事件。当用户点击视图上的某个按钮时,查看只会触发某个事件,通知某些内容已更改。

第二种是使用观察者模式,让演示者干涉某些合同。让它成为我上面告诉你的事件之类的方法的接口。主持人观察者应该附在视图上。

正如杰里米·米勒(Jeremy Miller)在他的传奇人物"Build your own CAB series" blog posts所说的那样,他最好使用第二种选择。

您对此主题有何看法? 如何在项目中绑定演示者和视图? 每种选择有哪些优点或缺点?

我们在这里进行一些民意调查。我认为这会很有用。 提前谢谢!


为了回应Peter Ritchie的回答。

我的问题是我缺乏经验,我应该依靠某人的意见做出决定并选择一种对我来说似乎正确的方式。

  

接口的缺点是你有特定的耦合。视图耦合到接口,必须实现该接口

但另一方面,事件是不是像某个合同一样(如界面那样)?它将演示者与视图联系在一起,因为它应对事件作出反应。

1 个答案:

答案 0 :(得分:2)

观察者可能有点单调乏味。如果您有多个控件可以生成事件或多个事件,那么您必须一次连接一个。而如果你使用一个接口,它就在一个地方,如果你忘记实现接口的特定成员,你就会得到类型安全和编译错误。接口的缺点是你有特定的耦合。视图耦合到接口,必须实现该接口。您可以使用接口隔离来限制与一个特定类的接口耦合;但是,这增加了一定程度的复杂性。

对此没有正确答案;您可以提供一些标准来帮助您做出决定吗?