Как оповещать контроллер о действиях пользователя? Решил написать простенькое приложение, используя MVC. Связь между моделью и представлением примерно ясна: Модель - субъект, вьюверы - слушатели. При обновлении данных, модель оповещает всех слушателей. Представление, когда получает эти данные, перерисовывается на их основе.
Какая связь между представлением и контроллером? Как контроллер должен узнать о кликах на кнопки или о движении мыши?
После прочитанных статей пришел к выводу, что представление должно внутри себя хранить ссылку на контроллер и при необходимости делегировать задачи методам контроллера.
Например, в представлении создаем кнопку и внутренний класс, который будет слушателем этой кнопки. Во внутреннем классе, в методе actionPerformed, вызываем определенный метод контроллера. То есть, используется паттерн "Стратегия": представление делегирует часть своих обязанностей стратегии-контроллеру.
Я все правильно понял? Если да, то кто выбирает, какому вьюверу какой контроллер предоставить? Или этим занимается сам контроллер, передавая себя в качестве аргумента в конструктор представления?
-----------------
Второй вопрос: Может ли в приложении быть несколько контроллеров? Если да, то в каких случаях? Как происходит их переключение и обмен данными между ними?

21 Авг 2019 в 07:05
176 +1
1
Ответы
1

Да, ваше понимание правильно. Взаимодействие между представлением и контроллером в паттерне MVC обычно осуществляется через делегирование, когда представление имеет ссылку на контроллер и вызывает его методы при определённых событиях, таких как клики на кнопки или движение мыши. При этом контроллер сам передаётся в представление, обычно через его конструктор.

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

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

В целом, важно хорошо спроектировать структуру приложения и решить, какие контроллеры будут управлять какими аспектами функциональности, чтобы обеспечить чёткое и эффективное взаимодействие между компонентами MVC.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 093 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир