MVC在列表和数据库方面的混乱

时间:2016-02-24 07:14:20

标签: java model-view-controller

我正在尝试为我的Java桌面应用程序实现MVC,我对它不是很熟悉。出于问题的目的,我正在考虑一个用例,在其中单击“刷新”按钮,它查询DB以查找学生列表并更新学生列表。以下是我一直困扰我的问题:

1 - 对于DB,是在控制器中还是在模型中进行查询?我的直觉是它的控制器查询并且一旦收到结果,它就会更新模型。但是我在很多帖子中都读过,模型是知道状态转换并进行更新的人!

2-谁创建了视图和模型?控制器是创建它们还是从外部创建并传递给控制器​​?

3 - 在上面的用例中,模型是否由一个学生的ArrayList组成,或者模型只是一个Student对象,但是Controller有和模型的ArrayList?

请帮助其他开发者

1 个答案:

答案 0 :(得分:1)

  

要查询数据库,它是在控制器中还是在模型中发生?

简短回答,在模型中查询数据库。

学生列表是GUI的模型,其中Student是包含学生信息的Java对象。学生列表也是数据库的模型。

您可以通过不同的方式来处理学生列表与数据库之间的交互。一种方法是在GUI初始化开始时读取所有学生信息。当您的用户与GUI交互时,GUI控制器会在GUI模型中插入,更新和标记学生以进行删除。最后,当用户关闭GUI时,您将学生列表中的所有更改写入数据库。这样,虽然简单,但如果您的GUI异常终止,则会使您面临数据损坏。此外,一次只能有一个人对数据库进行更改。

更好的方法是在GUI初始化开始时读取所有学生信息,如前所述。当您的用户与GUI交互时,GUI控制器会更新GUI模型中的学生列表。每次插入,更新或删除后,您都可以调用数据访问对象中的相应方法来分别插入,更新或删除学生信息。

  

谁创建了视图和模型?

你这样做。 : - )

模型/视图/控制器模式不仅仅用于组织代码。通常,您首先创建模型的第一个切口。然后创建视图,并将字段添加到创建第一个剪切时忘记的模型。最后,您创建控制器。控制器应该只执行模型中的方法来更新视图中的模型和方法以重新绘制/重新验证视图。

将模型的实例和视图的实例传递给控制器​​。您应该只有一个模型实例和一个视图实例。但是,他们不是单身人士。

  

在上面的用例中,模型是由一个学生的ArrayList组成还是模型只是一个Student对象,但是Controller有和模型的ArrayList?

最后,一个简单的问题。两者都不是。

您的模型是学生的列表。 List接口将由ArrayList类实现。这样的事情。

List<Student> studentList = new ArrayList<>();

通过使用该接口,您可以轻松地将ArrayList更改为LinkedList或您自己的List接口实现。

一般的Java规则是使用接口,除非您只需要在具体类中定义所需的方法。

我希望这很有帮助。