模型 - 视图 - 展示器模式中的Presenter是否应该处理多个UI'视图上的元素?

时间:2014-09-23 02:01:15

标签: c# wpf mvvm mvp passive-view

我正在WPF中使用Model-View-Presenter(MVP)模式实现Diagram / Flow-Chart类型设计器。

我经常将这种模式(以及其他一些如Passive View和MVVM)作为高级体系结构,无法解决丰富UI中涉及的一些复杂性(这里是SO巨魔)。

在我的特定实例中,我有一个类似于以下模型的UI:

enter image description here

我已经选择为每个元素使用Presenter对象,这需要设计器上的表示逻辑。到目前为止,这给我留下了以下设计师。

DesignerPresenter    ControlPresenter    ControlOverlayPresenter    ConnectionPresenter    ConnectionPointPresenter    OverlayPresenter

我实现这些原因的原因是因为每个人都需要处理表示逻辑并将其操作分别传递给业务/域层,以避免膨胀(IMO)。

我会看到这样做的唯一另一种方式是,如果有一个演示者处理所有这种表示逻辑,看起来它会很快失控。

我的问题如下:

  1. 看到为屏幕上的每个UI元素提供的演示者是否常见,例如我正在进行以便分离演示逻辑?
  2. 创建的一些演示者是逻辑上的儿童演示者(ControlPresenter是DesignerPresenter的儿童演示者)这是正常的吗?
  3. 这是否与另一种更有意义的模式保持一致?

1 个答案:

答案 0 :(得分:1)

我从未使用MVP,但我对MVVM模式非常满意,如果我用ViewModel替换Presenter这个词,那么这个设计就符合我的想法。

DesignerPresenter具有ControlPresenter的ObservableCollection并且ControlPresenter包含ConnectionPresenter的ObservableCollection是完全正常的。 ConnectionPresenter也可能有两个ConnectionPointPresenter。

整体设计看起来还不错,但可能还有其他类似的架构。恕我直言可能有太多的分离。分离连接和连接点是否有意义?