2010-11-22 47 views
1

假設您的應用程序中有多個MVP黑社會(WinForms .NET 2.0應用程序),並且每個黑社會都負責一個責任區。協調MVP黑社會之間溝通的首選方式是什麼?協調MVP黑社會

選項1 協調器對象「擁有」每個模型,並通過訂閱每個模型中的必要事件,然後決定在哪些場景中調用哪些模型方法來協調協調。

擔心這可能是一個「上帝」類。

選項2 演示者「有」另一個演示者,並且當模型中發生感興趣的事情時,演示者使用另一個演示者來移動通信。

擔心演示者不應該有一個公共接口(Presenter-first方法),並且這會打破這一點。

我只是想知道其他人做了什麼來解決這個問題在一個可擴展的OO時尚。如果我添加另一個MVP黑社會怎麼辦?將它融入我的協調員有多困難?必須有一些很好的例子來說明如何在WinForms應用程序中管理多個MVP三元組?

回答

3

不要模糊......但這取決於。我過去使用的兩種方法:

  1. 使用Event Aggregator模式,並讓各個演示者觸發其他演示者可以處理的事件。例如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; } 
}