【问题标题】:Public Methods or subscribe to View events公共方法或订阅查看事件
【发布时间】:2009-06-18 11:05:51
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: winforms mvp


    【解决方案1】:

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

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

    【讨论】:

    • 同意!在项目中使用选项 2 很长时间后,我们更改为选项 1(让视图调用演示者)。更少的复杂性和更少的工作量。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多