Шаблон MVC с несколькими объектами

1

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

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

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

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

  • 0
    Вот когда вы создаете постоянный слой. Обычно этот слой обеспечивает интерфейс через репозитории . Мудрость ты найдешь, когда в хранилище смотришь.
  • 0
    Вы сохраняете все экземпляры Студента в модели.
Показать ещё 4 комментария
Теги:
arraylist
model-view-controller

2 ответа

0
Лучший ответ

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

  • 0
    или в этом случае StudentService имеет ArrayList<Student> . но как тогда работает MVC? Контроллер все еще контролирует только 1 объект домена?
0

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню