【问题标题】:Is the state design pattern overkill for a PHP form?PHP 表单的状态设计模式是否矫枉过正?
【发布时间】:2010-08-03 03:10:49
【问题描述】:

我有一个页面,访问时会显示与视频相关的信息表:

  • 嵌入代码
  • 标题
  • 说明
  • 当前画廊
  • 缩略图

第一次访问页面时,此信息是只读的。

有一个选择菜单有以下选项:

  • 编辑说明
  • 创建缩略图(上传/替换)
  • 编辑嵌入代码
  • 更改图库
  • 删除视频

当用户选择一个选项时,会显示相同的初始数据表,但在必要时会显示相关的表单输入。

例如,如果选择了“编辑描述”,则页面会重新加载,并且描述文本会替换为文本输入。如果选择“创建缩略图”,则显示文件上传输入。

这个想法是将所有信息一起显示,但限制一次可以编辑的数量。

我知道状态模式是一种可能的解决方案,因为每条数据至少可以处于两种状态中的一种:

  1. 显示状态
  2. 表单输入状态

但是,我的问题是,使用状态模式会不会过大?

此时,每次访问页面时,表单的每个部分都会通过 switch 语句决定它应该处于“显示”还是“输入”状态,然后进行相应的操作。我想知道实现状态模式设计是否会使更改表单和创建类似表单更容易。

谢谢!

【问题讨论】:

  • 更好:为什么不使用javascript在用户单击链接时生成表单。这样他就不必重新加载页面了。
  • 好吧,我还没有涉足 ajax 并试图保持简单。
  • 好吧,我不是在建议 ajax(尽管这是个好主意)。表格仍然可以以正常方式提交;这只是动态创建表单的问题(或者只是将其包含在 HTML 中并将显示从无更改为阻止)。
  • @Artefacto - 谢谢你的推荐。我可能最终会构建更多的 javascript,但我正在构建一个我将独立维护的系统,并初步决定除非绝对必要,否则不依赖 javascript。例如,我正在使用 javascript 进行“图像重新排列”脚本。谢谢你的想法是个好主意!
  • 嗨,迈克,我相信您已经为您的案例实现了状态模式。您介意分享代码示例吗?

标签: php forms design-patterns state-pattern


【解决方案1】:

不,状态设计模式并不过分。对于处理如此复杂的接口,它可能是一个非常好的算法选择。我曾多次在 PHP 中使用过状态引擎;它可以帮助您创造性地思考问题,并且您通常会在灵活性方面获得奖励。

我希望更多的程序员知道这些事情。

【讨论】:

  • @staticscan - 谢谢,这令人鼓舞!
【解决方案2】:

我越多地使用设计模式,包括 PHP 中的状态模式,我就越相信它们可以节省时间。最初,开发可能需要更长的时间,但不会太长。但是,在更改和更新方面,它们可以节省大量时间。您的代码组织得更好,更清晰,并且不太可能通过设计模式之外的紧密绑定获得您的代码。我在 php5dp.com 上做过几个 PHP 设计模式,但是在 State dp 中什么都没有。

【讨论】:

    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2014-10-31
    • 1970-01-01
    • 2011-03-10
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多