公共方法或订阅查看事件

时间:2009-06-18 11:05:51

标签: winforms mvp

我编写了一个MVP项目,其中View是一个实现我的IView接口的WinForm。 我正在审核代码,在可以的地方进行改进,并且想询问您关于视图和演示者如何交互的想法。您认为以下哪项是最佳做法?

  1. 为要使用的视图公开presenter类的方法。 (即公开)。
  2. 让演示者听取View类引发的事件。
  3. 例如,我的MVP使用通过serialport进行通信的服务。为了连接到远程设备,我的视图调用公共Presenter方法Connect(),然后调用相应的服务方法。

    提升Connect()事件并让演示者听取它会更好吗?

2 个答案:

答案 0 :(得分:6)

通常我的工作方式是视图取决于演示者,演示者依赖于模型。这意味着多个演示者可以使用相同的模型,同一个演示者可以使用我的多个视图(不同的UI布局,或Winforms与Web等)。为方便起见,视图调用演示者上的公共方法,并侦听演示者发来的事件以说明数据何时发生变化。

有关您为什么希望以这种方式工作的示例,请设想一个具有两个视图的接口,一个用于初学者用户,另一个用于专家,初学者视图显示专家命令的子集。如果这两个视图使用相同的演示者,那么初学者视图将需要公开所有专家命令的事件,因为演示者需要它们在那里它所以它可以绑定到它们 - 即使它们永远不会被触发。另一方面,演示者可以公开所有专家选项的方法,初学者视图从不调用它们,这意味着视图和演示者都没有实现未使用的功能。

答案 1 :(得分:0)

我在这里遵循的准则是 - “演示者中的公共方法应该是无参数的。视图对象应该只访问演示者的无参数方法。另一个选项是视图可以定义演示者可以订阅的事件。无论哪种方式,应该有没有参数传递。“ 。对纪念和评论持开放态度。

相关问题