4

我编写了一个 MVP 项目,其中 View 是一个实现我的 IView 接口的 WinForm。我正在审查代码,尽我所能改进它,并想询问您对视图和演示者如何交互的想法。您认为以下哪项是最佳实践?

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

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

引发 Connect() 事件并让演示者监听它会更好吗?

4

2 回答 2

6

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

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

于 2009-06-18T11:15:17.450 回答
0

我在这里要遵循的准则是-“演示者中的公共方法应该是无参数的。视图对象应该只访问演示者的无参数方法。另一个选项是视图可以定义演示者可以订阅的事件。无论哪种方式,都不应该有参数传递。” . 接受建议和评论。

于 2012-01-20T08:58:01.840 回答