Winforms 协调MVP三位一体

Winforms 协调MVP三位一体,winforms,mvp,ooad,Winforms,Mvp,Ooad,假设您的应用程序(WinForms.NET 2.0应用程序)中有多个MVP三元组,每个三元组负责一个责任区域。你喜欢用什么方式协调MVP三人组之间的沟通 选择1 一个协调器对象,它“拥有”每个模型,并通过订阅每个模型中必要的事件,然后决定在什么场景中调用什么模型方法来管理协调 担心这可能是一个“上帝”类 选择2 一个演示者“拥有”另一个演示者,当模型中发生感兴趣的事情时,演示者使用另一个演示者来移动通信 担心演讲者不应该有一个公共界面(演讲者优先的方法),这打破了这一点 我只是想知道其他人做了什

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

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

担心这可能是一个“上帝”类

选择2 一个演示者“拥有”另一个演示者,当模型中发生感兴趣的事情时,演示者使用另一个演示者来移动通信

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


我只是想知道其他人做了什么来以可伸缩的OO方式解决这个问题。如果我再添加一个MVP三元组呢?要把它融入我的协调人有多难?关于如何在WinForms应用程序中管理多个MVP三元组,一定有一些很好的示例?

不要含糊其辞。。。但这要视情况而定。我过去使用过两种方法:

  • 使用一种模式,让各个演示者触发其他演示者可以处理的事件。e、 g.PresenterA执行:
    events.Raise()
    ,PresenterB实现:
    IHandler
    ,并在其
    公共无效句柄(MyEvent@event)
    方法中做出相应反应
  • 使用注入需要协调的演示者的共享模型。例如,如果一个演示者处理给定Foo的选择,而另一个演示者需要使用Foo详细信息更新详细信息面板,我可能会使用IFooSelection状态模型,并将其注入需要协调“当前选择”概念的两个演示者
  • 界面:

    public interface IFooSelection {
        public event EventHandler Changed;
        Foo Selected { get; set; }
    }