model-view-controller - MVC 设计 - 有多少个 Controller ?

标签 model-view-controller servlets

概览

我正在构建一个由 Canvas 和 Canvas 上的元素组成的简单网络应用程序。

Canvas 支持以下操作:加载、保存

元素支持以下操作:移动、调整大小

网页上的 JavaScript 会针对每个操作向服务器发送一条消息,而服务器会发送相应的响应。

我的设计

enter image description here

注意:Canvas 和 Element 对象之间的箭头应该表示 Canvas 对象包含一个 Element 对象列表。我没有正确的图表符号。

示例工作流程

  1. Canvas 上的元素被移动,生成 element_moved 消息。
  2. 前端 Controller 管理 session 并使用正确的 Canvas 对象将消息传递给 Canvas Controller 。
  3. Canvas Controller 检查消息并发现它是针对 Canvas 上的元素并将其传递给元素 Controller 。
  4. 元素 Controller 解析消息并直接更新适当的元素对象。

问题

Controller 的这种层次结构排列在 MVC 设计中很常见,还是我完全忽略了这一点?我搜索了几个小时,但没有找到比简单返回页面 View 更深入地讨论 MVC 设计的网站。

我设计背后的动机是,客户端需要与之交互的每个对象都有一个 Controller ,这样如果接口(interface)发生变化(以支持新方法),则可以更新相应的 Controller ,而不会影响设计的其他部分。

最佳答案

通常您不会让一个 Controller 在 MVC 中调用另一个 Controller 。您指定为元素 Controller 的内容实际上只是更新 Canvas 模型的业务逻辑的一部分。如果您的用例要求您独立于 Canvas 更新元素,那么您将有一个单独的元素 Controller ,调用业务逻辑来更新元素。

干杯, 瑞安

关于model-view-controller - MVC 设计 - 有多少个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5624660/

相关文章:

javafx - 单独的 EventHandler 和 gui 代码

mysql - 类型不匹配 : cannot convert from java. sql.Connection 到 com.mysql.jdbc.Connection

java - Web 应用程序中的线程(servlet、Spring、hibernate)

java - 尝试在 Java 中实现 MVC 模式,但没有显示 JFrame,即使我的应用程序是 "running"

model-view-controller - SharePoint 客户端对象模型在 clientContext.ExecuteQuery() 方法上返回 "User Cannot Be Found"

java - 如何重定向到 Spring MVC 中的 View

asp.net - log4Net - 记录到位于单独项目中的 Entity Framework 数据库

java - ContextLoaderListener 与否?

java - 如何清除 Java HttpServletResponse 的屏幕输出

java - 验证服务器之间的用户请求