【问题标题】:Design Patterns: What's the antithesis of Front Controller? [closed]设计模式:前端控制器的对立面是什么? [关闭]
【发布时间】:2011-01-31 11:11:53
【问题描述】:

我熟悉前端控制器模式,其中所有事件/请求都通过单个集中控制器处理。

但是,如果您希望在表示层也将应用程序的各个部分分开,您会怎么称呼它呢?我的第一个想法是“Facade”,但事实证明这是完全不同的东西。

在我的特殊情况下,我正在将应用程序从一个杂乱无章的程序混乱转换为一个干净的 MVC 架构,但这是一个长期的过程——我们需要尽可能地将事物分开,以促进与系统的其余部分。我们的应用程序是基于 Web 的,使用 PHP 构建的,例如,我们有一个“index.php”和一个 IndexController、一个“account.php”和一个 AccountController、一个“dashboard.php”和 DashboardController,等等。

【问题讨论】:

  • 请澄清问题。您希望将表示层的哪些部分或方面分开?
  • 我根本不应该说表示层。我基本上只是指客户端向服务器请求页面的点。使用前端控制器(在 PHP 中),所有请求都会转到 index.php。在这种情况下,我们对系统的每个单独组件都有不同的入口点,例如dashboard.php、account.php、report.php、signup.php(由唯一的用户界面布局定义)。每个都有自己的控制器,并且在某种程度上充当自己的迷你应用程序。这有帮助吗?

标签: php design-patterns architecture front-controller


【解决方案1】:

PoEAA 将此类称为“页面控制器”,每个 Web 服务器上的一个模块充当网站上每个页面的控制器。

【讨论】:

【解决方案2】:

看看Web Presentation Patterns of PoEAA

  • Model View Controller - 将用户界面交互分为三个不同的角色。
  • Page Controller - 处理对网站上特定页面或操作的请求的对象。
  • Front Controller - 处理网站所有请求的控制器。
  • Template View - 通过在 HTML 页面中嵌入标记将信息呈现为 HTML。
  • Transform View - 逐个元素处理域数据并将其转换为 HTML 的视图。
  • Two-Step View - 分两步将域数据转换为 HTML:首先形成某种逻辑页面,然后将逻辑页面渲染为 HTML。
  • Application Controller - 处理屏幕导航和应用程序流程的集中点。

【讨论】:

    【解决方案3】:

    我对你在这里问的问题感到困惑,因为表示层已经是独立的——视图提供了该功能。如果您有一个页面的公共部分应该存在于所有视图中,也许您正在寻找类似View Helper pattern 的东西?使用 Zend_Framework 或 CakePHP 或 CodeIgniter 等现有的 PHP 开发框架,可以通过内置的方式完成此操作。

    【讨论】:

      【解决方案4】:

      AdapterFactoryStrategy 似乎都是隐藏底层代码的适用方式,但就像 BillyONeal 一样,我不确定你在问什么,因为看起来简单地模块化代码会工作,但我不知道模块化模式。

      【讨论】:

      • +1 用于提及显式模式而不是我的尝试。 :P
      【解决方案5】:

      我什至可以称之为控制器组合。所以你可以称它为模块化组合控制器。

      【讨论】:

        猜你喜欢
        • 2011-07-11
        • 1970-01-01
        • 2014-05-04
        • 1970-01-01
        • 2011-06-23
        • 2015-11-30
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        相关资源
        最近更新 更多