我对应用程序控制器应该做什么有点困惑?因为我看到您的 MVP 模式中也存在该功能来决定单击按钮时应显示哪种形式?有没有使用应用程序控制器模式的 Windows 窗体的好例子?
MVC(控制器)和应用程序控制器有区别。我知道 MVC(控制器),我不确定应用程序控制器的职责是什么,以及它如何适合 WinForms 应用程序。Martin Fowler 也称其为 Application Controller 模式,肯定与 MVC(ontroller) 不一样吧?
我对应用程序控制器应该做什么有点困惑?因为我看到您的 MVP 模式中也存在该功能来决定单击按钮时应显示哪种形式?有没有使用应用程序控制器模式的 Windows 窗体的好例子?
MVC(控制器)和应用程序控制器有区别。我知道 MVC(控制器),我不确定应用程序控制器的职责是什么,以及它如何适合 WinForms 应用程序。Martin Fowler 也称其为 Application Controller 模式,肯定与 MVC(ontroller) 不一样吧?
应用程序控制器与 MVC 中使用的控制器有点不同。
Martin Fowler 在Application Controller上的页面。
对于 MVP WinForms 应用程序,这似乎是我认为的问题主题。您可以将“我现在显示什么形式”的所有逻辑放入 Presenter,但随着应用程序的增长,您将在 Presenter 之间复制大量代码。
假设您有 2 个视图,它们都有一个“编辑此小部件”按钮,它们都必须具有获取 WidgetEditorPresenter 并显示关联视图的逻辑。如果你有一个 ApplicationController,你把这个逻辑移到 ApplicationController 中,现在你的所有 Presenter 都依赖于 ApplicationController,你可以调用 appController.EditWidget(),它会弹出正确的视图。
应用程序控制器是一个超级控制器,当您从一个屏幕移动到另一个屏幕时,它可以控制整个系统中的应用程序流。
我最近写了一篇关于在 C# Winforms 项目中创建和使用 ApplicationController 的文章,以将工作流和演示者直接与表单分离。它可能会有所帮助:
编辑:
Archive.org 目前获得了这篇文章的可读性更高的副本。
就我个人而言,我没有使用 MVP 或 winforms 的经验,但我使用过 MVC。我希望这是您要问的,否则完全忽略我的回答。
MVC 中的 C 不仅仅负责选择要呈现给客户端的下一个视图。它拥有应用程序的大部分业务逻辑,最好是所有业务逻辑,包括系统任务的执行(例如记录和对从模型到模型的数据流执行权限)。
它的主要任务自然是为上面的表示层提供服务,并将其与下面的模型层分开,同时在它们之间进行调解。我想您可以将其视为应用程序的大脑。
希望这可以帮助,
尤瓦尔=8-)