MVP事件或财产

时间:2008-10-29 07:19:15

标签: .net mvp

我在Windows窗体应用中使用MVP模式。我需要更改视图上的单选按钮。我可以通过在视图上公开一个布尔属性来做到这一点,但是我应该使用事件来操纵视图吗?

3 个答案:

答案 0 :(得分:5)

这是一个纯粹的问题,而不是务实......还有一点个人风格。无所谓......事件只是比普通方法更多的工作,但更多的解耦。 个人

  • 我喜欢将视图分离或不知道演示者,因此视图通过引发事件与演示者进行通信。这消除了视图需要引用演示者的需要。让视图变得稀薄和愚蠢。
  • 另一方面,演示者通常具有对视图(和模型)的成员引用。因此它可以通过接口进行方法调用来与视图对话(允许视图被替换,只要它们符合IView接口)。例如在您的情况下,Set_X_Option(eOptionEnum)将是IView接口的成员,然后演示者可以适当地调用它。

但是你可以删除这个IView依赖(presenter引用了一个需要实例化和插入的IView)以及通过两种方式使用事件...但是我发现它的工作太多了。上述计划从未让我失望......但是。

答案 1 :(得分:2)

使用“简单语言”分析,我会说“无论是否显示单选按钮是视图的属性”,因此使用实际属性将其传递给View。

另一种(技术)可能性是在Presenter上有一个事件,即RadioButtonVisibilityChanged,由View监听并通过EventArgs传递新的可见性。这与视图独立且与演示者无知相反,因此破坏了MVP模式。我建议反对这样的废话。

答案 2 :(得分:1)

通常,控制器通过属性更改视图,并订阅视图引发的事件以了解更改。这是一个nice example of MVP,即使在Asp.NET中,Windows Forms的工作方式基本相同。