Java 具有多个对象的MVC模式

Java 具有多个对象的MVC模式,java,model-view-controller,arraylist,Java,Model View Controller,Arraylist,在我在MVC模式学校得到的一个例子中,我们有三个班,分别是Student、StudentView和StudentController。控制器有一个model Student的实例在本例中还有一个控制器的实例。我的问题是控制器只处理一个对象 很明显,你可以有更多的学生,所以我在某处有一个ArrayList。我应该把它放在哪里?那么如何处理模型和视图呢 我最初的想法是将列表放在StudentController中,但后来我发现控制器不再用于单个Student实例,而是用于列表,所以我需要制作两个单独

在我在MVC模式学校得到的一个例子中,我们有三个班,分别是Student、StudentView和StudentController。控制器有一个model Student的实例在本例中还有一个控制器的实例。我的问题是控制器只处理一个对象

很明显,你可以有更多的学生,所以我在某处有一个ArrayList。我应该把它放在哪里?那么如何处理模型和视图呢

我最初的想法是将列表放在StudentController中,但后来我发现控制器不再用于单个Student实例,而是用于列表,所以我需要制作两个单独的控制器吗?一个给学生,一个给ArrayList,叫做AllStudents


编辑:该应用程序是一个简单的学生评分系统。学生遵循课程,课程可以有分数。该视图在控制台中显示学生、课程或年级的数据。数据是在程序中硬编码的,对象是“动态”生成的。

这是一个导致更广泛问题的问题:应用程序的其余部分做什么

在视图、控制器和模型之间建立1:1:1的关系显然是完全正确的。你可能感兴趣的是一辆活动巴士。当兴趣模型发生变化时,控制器会收到通知,并使用新的学员参考进行更新

或者,控制器获取整个列表,视图向控制器发送一个事件,指示应该显示集合中的不同实例


在许多应用程序中,您将拥有主视图和详细视图。主视图显示所有学生的列表。当选择一名学员在详细信息视图中显示时,将发送通知/事件。这基本上是一个发布/订阅观察者/主题模型。详细视图控制器将收到通知,并相应地显示正确的数据。

模型不一定只是一个类,它是一个层。您的学生类作为模型层中的域对象,现在您需要一个服务,可能还需要模型中的某种持久性/orm。服务可以是StudentService,其方法类似于getAllStudents返回列表。StudentService可能有一个连接器实例,用于从数据库或文件获取数据。

这就是创建持久层的时候。通常,该层通过存储库提供一个接口。当你查看存储库时,你会发现智慧。你将学生的所有实例保存在模型中。你将学生模型保存在类StudentList或StudentData或StudentDB中。因此MVC部分保持不变,只是我添加了一个持久层,通过持久性类获取“模型”,并将它们放在控制器中?持久性是模型的一部分。MVC中的模型并不像:type中那样仅指单个模型,而是指整个代码库。坦率地说,这个问题太宽泛了,无法回答,而且无论如何也不属于这里。您可以做的最好的事情是开始阅读关于MVC体系结构和存储库设计模式的博客文章。看看示例实现。添加了一些上下文,以便更清楚应用程序需要做什么。或者在本例中,StudentService有一个ArrayList。但是MVC部分是如何工作的呢?控制器仍然只控制1个域对象,那么?