2014-12-26 7 views
1

В примере, который я получил в школе образца MVC, у нас было 3 класса Student, StudentView и StudentController. Контроллер имеет экземпляр модели (Student в этом случае) и экземпляр контроллера. Проблема с этим заключается в том, что контроллер обрабатывает только один объект.MVC Шаблон с несколькими объектами

У вас, очевидно, может быть больше учеников, поэтому у меня есть ArrayList<Student>. где я могу это выразить? и как мне обрабатывать модель и просматривать ее?

Моя первоначальная мысль заключалась в том, чтобы поместить список в StudentController, но потом выяснилось, что контроллер больше не подходит для одного экземпляра Student, но для этого списка мне нужно сделать 2 отдельных контроллера? один для Student и один для ArrayList<Student> называется что-то вроде AllStudents?

Редактировать: Приложение представляет собой простую систему классификации для учащихся. Студенты следуют за курсами, и курс может иметь класс. В представлении отображаются данные учащегося, курса или класса в консоли. Данные жестко закодированы в программе (объекты выполняются «на лету»).

+0

Именно тогда вы создаете слой сохранения. Обычно этот слой предоставляет интерфейс через * репозитории *. Мудрость, которую вы найдете, когда в репозитории вы смотрите. –

+0

Вы сохраняете все экземпляры Студента в модели. –

+0

Вы сохраняете студенческие модели в классе StudentList или StudentData или StudentDB. –

ответ

0

Модель не обязательно только один класс, это слой. Ваш класс учеников как объект домена в вашем слое модели теперь вам нужна служба и, возможно, какая-то постоянство/orm в вашей модели. Службой может быть StudentService с такими методами, как getAllStudents(), возвращающий список. У StudentService может быть экземпляр соединителя для получения данных из базы данных или файла.

+0

или в этом случае 'StudentService' имеет' ArrayList '. но как работает часть MVC? Контроллер по-прежнему контролирует только один объект домена? –

0

Это вопрос, который приводит к гораздо более широкому вопросу: что делает остальная часть приложения?

Совершенно очевидно, что соотношение между представлением и контроллером составляет 1: 1: 1. Вас может заинтересовать автобус событий. Когда интересующая модель изменяется, контроллер получает уведомление и обновляется с помощью новой ссылки для Стьюдента.

Или контроллер получает весь список, и представление отправляет событие контроллеру, указывающее, что должен отображаться другой экземпляр из коллекции.

Во многих приложениях у вас будут вид мастера и детали. В главном представлении отображается список всех учащихся. Когда один ученик выбран для отображения в подробном представлении, отправляется уведомление/событие. Это, в основном, публикация/подписка на наблюдателя/тему. Контроллер подробного представления будет уведомлен и соответствующим образом отобразить соответствующие данные.

+0

Добавлены некоторые контекст, поэтому более ясно, что нужно делать приложениям. –

+0

Обновлен мой комментарий. –