应用程序控制器应该做什么?

时间:2008-09-23 12:49:47

标签: winforms design-patterns

我对应用程序控制器应该做什么有点困惑?因为我看到MVP模式中也存在功能,以便在单击按钮时显示哪些表单?对于使用应用程序控制器模式的Windows窗体,是否有任何好的示例?

MVC(ontroler)和Application Controller存在差异。我知道MVC(ontroller),我不确定应用程序控制器的职责是什么,它如何适合WinForms应用程序。 Martin Fowler还将其称为Application Controller模式,当然它与MVC(ontroller)不同?

3 个答案:

答案 0 :(得分:12)

应用程序控制器与MVC中使用的控制器有点不同。

Martin Fowler在Application Controller上的页面。

对于MVP WinForms应用程序,这似乎是我想的问题主题。您可以将“我现在显示的形式”的所有逻辑放入Presenter,但随着应用程序的增长,您将在Presenter之间复制大量代码。

假设您有2个视图都有“编辑此窗口小部件”的按钮,它们都必须具有获取WidgetEditorPresenter并显示关联视图的逻辑。如果你有一个ApplicationController,你将该逻辑移动到ApplicationController中,现在你只需要在ApplicationController上的所有演示者中有一个依赖项,你就可以调用appController.EditWidget(),它会弹出正确的视图。

应用程序控制器是一个超级控制器,可以在您从一个屏幕移动到另一个屏幕时控制整个系统的应用程序流。

答案 1 :(得分:12)

我最近写了一篇关于在C#Winforms项目中创建和使用ApplicationController的文章,以直接将表单中的工作流和演示者与表单分离。它可能有所帮助:

Decoupling Workflow And Forms With An Application Controller

修改
Archive.org目前有一个more readable copy of the article

答案 2 :(得分:0)

就我个人而言,我没有MVP或winforms的经验,但我曾与MVC合作过。我希望这就是你所要求的,否则完全无视我的回答。

MVC中的C不仅仅是选择要呈现给客户端的下一个视图。它包含应用程序的大多数(最好是所有)业务逻辑,包括系统任务的执行(例如,从模型到数据流的数据流记录和执行权限)。

它的主要任务当然是在它上面提供表示层,并将它与下面的模型层分开,同时在它们之间进行调解。我猜你可以把它当作应用程序的大脑。

希望这有帮助,

Yuval = 8 - )