如何在想要使用MVP模式的应用程序中使用“MDI-ness”?

时间:2009-10-12 13:42:22

标签: winforms mvp mdi

情况:MainForm(分配给MainPresenter)已启动并正在运行。用户单击ShowFoo按钮 - 将事件传递给MainPresenter,MainPresenter又创建新的FooPresenter和FooView。我现在该怎么办?应该在哪里创建演示者以及创建视图的位置,最重要的是,应该在何处设置MDIParent属性? (所以我认为应该在主视图中完成。

注意:我使用的是依赖框架,尽管这与问题无关。理想情况下,我希望IView独立于Form类。

1 个答案:

答案 0 :(得分:1)

我处理它的方式有一个MainPresenter接口的功能,允许我创建一个FooPresenter(以及一个Foo2Presenter等)。 MainPresenter拥有其中的所有信息,以正确设置MDI父级的子表单。因此,为什么有它在那里是有道理的。

另一种方法是让AppPresenters类具有MainPresenter和FooPresenter作为属性或函数。在这里,AppPresenters持有演示者类,并负责将表单绑在一起以获得适当的MDI应用程序。这种方法的含义是应用程序是一个主/父表单,其中包含一堆子表单,这些表单不会反映在接口的设计中。

我认为这两种方法之间的差异很小。两者都可以很容易地适应不同风格的UI。因此,对您和您的应用程序更有意义。