1

假设您的应用程序(WinForms .NET 2.0 应用程序)中有多个 MVP 三元组,每个三元组负责一个责任区域。您首选的协调 MVP 三元组之间通信的方式是什么?

选项 1 一个协调器对象,它“拥有”每个模型并通过订阅每个模型中的必要事件来负责协调,然后决定在什么场景中调用什么模型方法。

担心这可能是“神”课。

选项 2 演示者“拥有”另一个演示者,当模型中发生感兴趣的事情时,演示者使用另一个演示者来推动交流。

担心演示者不应该有一个公共界面(演示者优先的方法),这打破了这一点。

我只是想知道其他人做了什么来以可扩展的 OO 方式解决这个问题。如果我添加另一个 MVP 三元组会怎样?将它融入我的协调器有多难?一定有一些很好的例子来说明如何在 WinForms 应用程序中管理多个 MVP 三元组?

4

1 回答 1

3

不要含糊不清......但这取决于。我过去使用的两种方法:

  1. 使用事件聚合器模式,并让各个演示者触发其他演示者可以处理的事件。例如 PresenterA 执行:events.Raise<MyEvent> ()并且 PresenterB 实现:IHandler<MyEvent>并在其public void Handle (MyEvent @event)方法中做出相应的反应。
  2. 使用注入到需要协调的演示者中的共享模型。例如,如果一个演示者处理给定 Foo 的选择,而另一个演示者需要使用 Foo 详细信息更新详细信息面板,我可能会使用 IFooSelection 状态模型并将其注入需要协调“当前选择”概念的两个演示者'。

界面:

public interface IFooSelection {
    public event EventHandler Changed;
    Foo Selected { get; set; }
}
于 2010-11-22T17:30:26.647 回答