10

我对应用程序控制器应该做什么有点困惑?因为我看到您的 MVP 模式中也存在该功能来决定单击按钮时应显示哪种形式?有没有使用应用程序控制器模式的 Windows 窗体的好例子?

MVC(控制器)和应用程序控制器有区别。我知道 MVC(控制器),我不确定应用程序控制器的职责是什么,以及它如何适合 WinForms 应用程序。Martin Fowler 也称其为 Application Controller 模式,肯定与 MVC(ontroller) 不一样吧?

4

3 回答 3

12

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

Martin Fowler 在Application Controller上的页面。

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

假设您有 2 个视图,它们都有一个“编辑此小部件”按钮,它们都必须具有获取 WidgetEditorPresenter 并显示关联视图的逻辑。如果你有一个 ApplicationController,你把这个逻辑移到 ApplicationController 中,现在你的所有 Presenter 都依赖于 ApplicationController,你可以调用 appController.EditWidget(),它会弹出正确的视图。

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

于 2008-11-28T15:49:22.947 回答
12

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

使用应用程序控制器解耦工作流和表单

编辑:
Archive.org 目前获得了这篇文章的可读性更高的副本

于 2009-04-20T21:44:12.297 回答
0

就我个人而言,我没有使用 MVP 或 winforms 的经验,但我使用过 MVC。我希望这是您要问的,否则完全忽略我的回答。

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

它的主要任务自然是为上面的表示层提供服务,并将其与下面的模型层分开,同时在它们之间进行调解。我想您可以将其视为应用程序的大脑。

希望这可以帮助,

尤瓦尔=8-)

于 2008-09-23T13:02:42.660 回答