【问题标题】:How to choose the number of controllers using MVC architecture如何使用 MVC 架构选择控制器的数量
【发布时间】:2017-12-21 19:16:08
【问题描述】:

我想开发一个基于 Java 的应用程序,我现在正在使用 MVC(模型-视图-控制器)设计软件架构。我的问题是关于确定控制多个模型的控制器数量的理想方法,这些模型以某种方式相互关联?更具体地说,我有 1 个视图和 3 个模型。模型不是独立的,即板模型由单元模型组成,单元模型具有自己的跟踪模型。模型之间的关系是动态的。对它们全部使用 1 个控制器是否理想,或者我应该继续为每个模型使用 3 个控制器和另一个不同的模型来控制这 3 个控制器? 任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 我认为每个视图一个控制器是好的,只要你没有为每个模型定义太多的功能。

标签: java model-view-controller architecture software-design


【解决方案1】:

归根结底,这一切都归结为现有系统或个人选择。但是如果你开始构建一个应用程序,你应该考虑使用one model per controller per view。这应该使您的应用程序朝着松散耦合的方向发展。

像这样,假设您有一个收集有关project 信息的视图。因此,project 模型可以有多个 processes,它们可以是单独的模型。同样,project 可以有team-members,这可能是member 模型的列表。

这样您就可以使用具有has-a 关系的多个模型。

最后,正如我所说,它总是成为个人选择。

【讨论】:

  • 您的 has-a 关系似乎很合理,但我有一个问题:如果模型具有“has-a”关系,那么依赖关系将在哪里管理?有人会在控制器中将“流程”添加到“项目”吗?然后所有模型都必须在控制器中进行管理,这意味着一个视图-一个控制器-多个模型。我说的对吗?
  • 是的,在控制器或服务中。我认为模型明智的服务也是一个很好的设计。所以,processService' will return the processes according to the projectId. Finally, adding these processModel` 列表到projectModel。所以基本上,项目控制器将依赖processService。通常,在像Spring 这样的框架中,这些依赖关系由SpringContainers 处理。我们只需要指定应该如何添加它们。
【解决方案2】:

Model-View-ControllerMVC 中,您的 一个视图 将连接到 一个特定的模型,其业务逻辑将由一个控制器控制。

根据您的设计,即使您拥有三个模型,也必须只有一个模型会直接与您的视图交互。因此,您应该只有一个控制器将与该模型进行交互。

其他两个模型可以通过您的主模型从同一个控制器实现业务逻辑,或者具有单独的类来完成其 BL 或功能。

最后,它将取决于项目的具体要求,您可以根据您的项目架构稍微修改每个设计模式。

【讨论】:

  • 感谢您的回答。我将尝试实施我从您的评论中理解的内容,如果我错了,请纠正我?在控制器中: Board() board = new Board(..); board.addUnit(新单元(...)); board.addUnit(新单元(..)); board.addTrace(board.getUnit(..).addNewTrace(..));
  • 这应该是你的方法,只有你的 UI 在 Unit 和 Terrace 模型上没有任何改变。如果有一些 UI 元素会更改此模型中任何人的数据。那么你应该有一个不同的视图和该模型的控制器
【解决方案3】:

每种类型的资源都有一个控制器。在大多数 REST 设计中,这对应于每个 URI 模式一个控制器。

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2013-12-28
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2023-03-07
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多