设计模式:Front Controller的对立面是什么?

时间:2010-03-24 20:57:53

标签: php design-patterns architecture front-controller

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

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

在我的特定情况下,我正在将一个应用程序从一个庞大的程序混乱转换为一个干净的MVC架构,但这是一个长期的过程 - 我们需要尽可能地保持事物分离,以促进与系统的其余部分。我们的应用程序是基于Web的,用PHP构建,因此,例如,我们有一个“index.php”和一个IndexController,一个“account.php”和一个AccountController,一个“dashboard.php”和DashboardController,依此类推。

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

查看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 - 处理屏幕导航和应用程序流程的集中点。

答案 2 :(得分:2)

我很清楚你在这里问的是什么,因为表示层已经是独立的 - 视图提供了这个功能。如果你有一个页面的公共部分应该存在于所有视图中,也许你正在寻找像View Helper pattern这样的东西?使用现有的PHP开发框架(如Zend_Framework或CakePHP或CodeIgniter)可以使用内置的方法。

答案 3 :(得分:2)

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

答案 4 :(得分:0)

我甚至会把它称为控制器的组合。所以你可以称之为Modular Composition Controller。