Java MVC - должен ли просмотр или контроллер запрашивать ввод? - PullRequest
0 голосов
/ 20 февраля 2012

Моя программа использует MVC. Когда пользователь нажимает «Новый файл», мне нужно проверить, был ли отредактирован предыдущий открытый файл (и предложить пользователю сохранить, если это так).

Из того, что я понял, контроллер должен выполнять только всю проверку и логику. Тогда нормально ли, чтобы мой контроллер запрашивал у пользователя имя файла, сохранял предыдущий файл и т. Д. С помощью JOptionPane? Или все входные данные должны быть приняты в GUI?

Спасибо!

Ответы [ 3 ]

1 голос
/ 20 февраля 2012

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

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

1 голос
/ 20 февраля 2012

В шаблоне MVC «Контроллер получает пользовательский ввод и инициирует ответ, вызывая объекты модели».

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

  1. Запрашивает у пользователя имя файла
  2. Проверить, был ли файл изменен
  3. Сохраните изменения и т. Д.

Чтобы помочь вам лучше понять, я скажу вам, какую задачу должен выполнять какой компонент.

Ваша модель должна иметь логику для выполнения 2 и 3. И ваш контроллер должен вызывать (вызывать методы) вашу модель и в зависимости от возвращаемых значений вызывать еще одну функциональность в представлении, такую ​​как использование JoptionPane и другие подобные вещи для запроса пользователь для имени файла и т. д.

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

Удачи.

1 голос
/ 20 февраля 2012

Роль контроллера в архитектуре MVC

Контроллер получает запрос.

Контроллер решает запрошенные действия на основе параметров запроса.

Контроллер делегирует задачи, которые должны быть выполнены на основепараметры запроса.

Контроллер делегирует следующий отображаемый вид.

Перейдите по этой ссылке

, чтобы дать представление о вашей проблеме.

...