【问题标题】:some doubts about model-view-controller关于模型视图控制器的一些疑问
【发布时间】:2013-07-05 01:55:27
【问题描述】:

我正在尝试在一个小型学校项目中实现 MVC,但我有一些小疑问,希望有人可以帮助我:

1.- 如果我有 5 个视图,我认为我需要 5 个模型,每个视图一个,但我需要 5 个控制器吗?还是只需要一个控制器来与所有这些交互。

2.-我需要从数据库中添加数据,我应该在哪里进行选择查询,在模型中还是在控制器中?

【问题讨论】:

  • 您了解了在哪里使用 1 个控制器以及在哪里使用多个控制器?

标签: java view model controller


【解决方案1】:

1.- 如果我有 5 个视图,我认为我需要 5 个模型,每个视图一个,但我需要 5 个控制器吗?还是只需要一个控制器来与所有这些交互。

不,这就是 MVC 的美妙之处。许多不同的视图可以使用一个模型。应该编写模型,使其不了解视图并且不需要这些知识。您可能需要 5 个控制器,但这不是给定的。您可能(尽管不太可能)只需要一个控件。

另外请注意,如果您需要多个不同的数据源和程序的“业务规则”,您实际上可能需要多个模型。

2.-我需要从数据库中添加数据,我应该在哪里进行选择查询,在模型中还是在控制器中?

这听起来像是一个控制问题。

对于每个 cmets,请注意创建 MVC 并不是为了解决有限的资源问题,而是作为一种允许创建模块化程序代码以减少耦合和增加内聚的方法。这应该使升级、增强和调试代码变得更加容易。

【讨论】:

  • +1 美丽的解释..我只是有点怀疑..控制器的灵魂目的是什么?
  • @Mac:控制器将所有东西联系在一起。
  • 感谢您的澄清先生。但是如果控制器绑定所有东西,那么部署 5 个控制器不是浪费资源吗?
  • @Mac:创建 MVC 不是为了解决有限的资源问题,而是作为模块化程序代码以减少耦合和增加内聚的一种方式。这应该使升级、增强和调试代码变得更加容易。
  • @user2558554:这完全取决于上下文。大多数情况下,您的代码会失败,因为控制通常是特定于视图的。
【解决方案2】:
  1. 这取决于这 5 个视图所代表的领域概念。如果它们代表关于同一领域概念的不同视图,例如学生列表、学生详细信息等,那么您将拥有 1 个模型和 5 个视图。每个域实体有一个控制器也是一个好主意。

  2. 您将使用称为 DAO(数据访问对象)的专用类与数据库进行交互,DAO 的方法通常是 CRUD 操作(创建、读取、更新和删除)。您将从控制器调用 DAO。

【讨论】:

  • 1+ 用于添加其他答案未涵盖的有用信息。
  • 嗯,每个视图都显示不同的东西,可能是学生、教授、部门等类似的东西
  • 是的,在这种情况下,您将拥有 5 个模型和 5 个控制器。为清楚起见,控制器应在逻辑上绑定到单个实体。因此,您将拥有 StudentController、ProfessorController 等。此外,我相信每个实体都需要多个视图 - 一个显示学生列表的页面、一个添加学生的页面等等。因此,StudentController 应该处理与学生实体相关的各个方面,等等。
【解决方案3】:
  1. 模型、视图和控制器无需以 1:1 的比例相互映射。
  2. 我通常认为这是控制器代码,但它可能在某种程度上取决于您的具体情况。

【讨论】:

    【解决方案4】:

    1) 取决于您要执行的操作。理想情况下,视图和控制器之间应该存在一对一的映射。但是,您可以只为多个模型创建一个控制器并尝试使用视图 ID 来操作视图。

    2) 选择查询通常应该在控制器中

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2020-08-07
      • 1970-01-01
      • 2012-08-23
      相关资源
      最近更新 更多