关于模型 - 视图 - 控制器的一些疑问

时间:2013-07-07 17:55:36

标签: java view model controller

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

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

2.-我需要从数据库中添加数据,在模型中或在控制器中进行选择查询?

4 个答案:

答案 0 :(得分:2)

  

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

不,这就是MVC的魅力所在。一个模型可以被许多不同的视图使用。应该编写模型,使其不了解视图,也不需要这些知识。您可能需要5个控制器,但这不是给定的。你可能(虽然不太可能)只需要一个控件。

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

  

2.-我需要从数据库中添加数据,在模型中或在控制器中进行选择查询?

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

根据评论,注意MVC不是作为有限资源的答案而创建的,而是作为一种允许创建模块化程序代码以允许减少耦合和增加内聚力的方式。这样可以更容易地升级,增强和调试代码。

答案 1 :(得分:2)

  1. 这取决于这5个视图所代表的域概念。如果他们代表相同领域概念的不同观点,例如学生名单,学生详情等,那么您将拥有1个模型和5个视图。每个域实体拥有一个控制器也是一个好主意。

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

答案 2 :(得分:1)

  1. 模型,视图和控制器无需以1:1的方式相互映射。
  2. 我通常认为这是控制器代码,但它可能在一定程度上取决于您的具体情况。

答案 3 :(得分:0)

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

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