2009-06-18 69 views
4

我写了一个MVP项目,其中View是一个实现我的IView接口的WinForm。 我正在审查代码,在可能的地方改进它,并且想问您关于视图和演示者如何交互的想法。您认为以下哪项是最佳做法?公共方法或订阅查看活动

  1. 公开演示者类的视图使用方法。 (即让他们公开)。
  2. 让演示者监听View类引发的事件。

例如,我的MVP使用通过串口进行通信的服务。要连接到远程设备,我的视图调用公共Presenter方法Connect(),然后调用相应的服务方法。

举一个Connect()事件并让演示者监听它会更好吗?

回答

6

一般来说,我的工作是让视图依赖于演示者,演示者依赖于模型。这意味着多个演示者可以使用相同的模型,并且可以使用我的多个视图(不同的UI布局或WinForms Web等)使用相同的演示者。为了促进这一点,视图调用了演示者的公共方法并监听演示者的事件,以说明数据何时发生变化。

想要以这种方式工作的原因想象一下,为初学者用户和专家用户提供两种视图的界面,初学者视图显示专家命令的子集。如果两个视图都使用相同的演示者,那么初学者视图将需要为所有专家命令公开事件,因为演示者需要他们在那里,因此它可以绑定到他们 - 即使他们永远不会被触发。另一方面,演示者可以公开所有专家选项的方法,而初学者视图则不会调用它们,这意味着视图和演示者都不实现未使用的功能。

+0

同意!在项目中长时间使用选项2后,我们更改为选项1(将视图调用到演示者中)。复杂性更低,工作更少。 – 2009-06-26 10:40:23

0

我在这里要遵循的指导方针是 - “公共方法在演示者中应该是无参数的,视图对象应该只访问无参数的演示者方法,另一种选择是视图可以定义演示者可以订阅的事件。没有参数传递“。 。打开问题和评论。