概览
我正在构建一个由 Canvas 和 Canvas 上的元素组成的简单网络应用程序。
Canvas 支持以下操作:加载、保存
元素支持以下操作:移动、调整大小
网页上的 JavaScript 会针对每个操作向服务器发送一条消息,而服务器会发送相应的响应。
我的设计
注意:Canvas 和 Element 对象之间的箭头应该表示 Canvas 对象包含一个 Element 对象列表。我没有正确的图表符号。
示例工作流程
- Canvas 上的元素被移动,生成 element_moved 消息。
- 前端 Controller 管理 session 并使用正确的 Canvas 对象将消息传递给 Canvas Controller 。
- Canvas Controller 检查消息并发现它是针对 Canvas 上的元素并将其传递给元素 Controller 。
- 元素 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/