具有多个对象的MVC模式

时间:2014-12-26 22:17:12

标签: java model-view-controller arraylist

在我进入MVC模式学校的一个例子中,我们有3个课程StudentStudentViewStudentController。控制器具有模型的实例(在这种情况下为Student)和控制器的实例。我遇到的问题是控制器只处理一个对象。

你显然可以有更多的学生,所以我在某个地方ArrayList<Student>。我把它放在哪里?以及如何处理模型并查看呢?

我最初的想法是将列表放在StudentController中,但后来我发现控制器不再是Student的单个实例,而是列表,所以我需要分开2个控制器?一个用于Student,另一个用于ArrayList<Student>,称为AllStudents

编辑:该应用程序是一个简单的学生评分系统。学生可以跟随Coursrs,课程可以获得成绩。视图在控制台中显示学生,课程或成绩的数据。数据在程序中被硬编码(对象是“即时”制作的。)

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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