В примере, который я получил в школе шаблона MVC, у нас было 3 класса Student
, StudentView
и StudentController
. Контроллер имеет экземпляр модели (Student
в этом случае) и экземпляр контроллера. Проблема с этим заключается в том, что контроллер обрабатывает только один объект.
У вас, очевидно, может быть больше учеников, поэтому у меня есть ArrayList<Student>
. где я могу это выразить? и как мне обрабатывать модель и просматривать ее?
Моя первоначальная мысль заключалась в том, чтобы поместить список в StudentController
но потом я узнал, что контроллер больше не для одного экземпляра Student
но для этого списка мне нужно сделать 2 отдельных контроллера? один для Student
и один для ArrayList<Student>
называется что-то вроде AllStudents
?
Редактировать: приложение представляет собой простую систему оценки для учащихся. Студенты следуют за курсами, и курс может иметь класс. В представлении отображаются данные учащегося, курса или класса в консоли. Данные жестко закодированы в программе (объекты выполняются "на лету").
Модель не обязательно только один класс, это слой. Ваш класс учеников как объект домена в вашем слое модели теперь вам нужен Сервис и, возможно, какой-то упорство /orm в вашей модели. Службой может быть StudentService с такими методами, как getAllStudents(), возвращающий список. У StudentService может быть экземпляр соединителя для получения данных из базы данных или файла.
StudentService
имеет ArrayList<Student>
. но как тогда работает MVC? Контроллер все еще контролирует только 1 объект домена?
Это вопрос, который приводит к гораздо более широкому вопросу: что делает остальная часть приложения?
Совершенно очевидно, что соотношение между представлением, контроллером и моделью должно быть 1:1: 1. Вас может заинтересовать автобус событий. Когда интересующая модель изменяется, контроллер получает уведомление и обновляется с помощью новой ссылки для Стьюдента.
Или контроллер получает весь список, и представление отправляет событие контроллеру, указывающее, что должен отображаться другой экземпляр из коллекции.
Во многих приложениях вы будете иметь представление мастера и детали. В главном представлении отображается список всех учащихся. Когда один ученик выбран для отображения в подробном представлении, отправляется уведомление/событие. Это, в основном, публикация/подписка на наблюдателя/тему. Контроллер подробного представления будет уведомлен и соответствующим образом отобразить соответствующие данные.