【问题标题】:What should an Application Controller do?应用程序控制器应该做什么?
【发布时间】:2008-09-23 12:49:46
【问题描述】:

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

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

【问题讨论】:

    标签: winforms design-patterns


    【解决方案1】:

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

    Decoupling Workflow And Forms With An Application Controller

    编辑:
    Archive.org 目前有一个more readable copy of the article

    【讨论】:

      【解决方案2】:

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

      Application Controller 上的 Martin Fowler 页面。

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

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

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

      【讨论】:

      • 很好的答案,在我回答时,OP 不太清楚他想知道什么。
      【解决方案3】:

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

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

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

      希望对你有帮助,

      尤瓦尔=8-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-26
        • 1970-01-01
        • 1970-01-01
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 2017-03-17
        相关资源
        最近更新 更多