Правильный подход MVC при использовании paintComponent - PullRequest
0 голосов
/ 28 октября 2018

Я хотел попытаться создать пример программы на светофоре, используя paintComponent, но я немного запутался в подходе MVC, 2 вопроса:

Я сделал это с рамкой (посмотреть) двигатель (модель) и JButton (контроллер), который будет включать / выключать свет.

Для меня самый простой способ сделать это - заставить мой контроллер напрямую общаться с представлением, вызываяпереключения ();(метод, который переключает логическое значение «active» на true / false ») в представлении, а затем вызывает repaint (); в представлении. Этот метод repaint проверяет, активен ли он, а затем рисует что-то другое в зависимости от того, активен ли он.true или false.

first Вопрос в том, приемлемо ли это стандартами MVC? Я бы сказал, да, так как это просто рисование, однако я считаю, что в методах представлений не должно быть вычислений, это проверка "active""Рассчитанные вычисления?

Было бы лучшим решением создать метод в модели, который затем мог бы вызвать метод toggle () для представления, так как это технически изменяет данные? или лучше просто изменить егонепосредственно из контроллера. Конечно, легче в меньшем сценарии, но я могу видеть, что это будет сбивать с толку для большего решения.

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

1 Ответ

0 голосов
/ 28 октября 2018

Для меня самый простой способ сделать это - заставить мой контроллер напрямую общаться с представлением, вызывая toggle ();(метод, который переключает логическое значение «active» на true / false ») в представлении, а затем вызывает repaint (); в представлении. Этот метод repaint проверяет, активен ли он, а затем рисует что-то другое в зависимости от того, активен ли он.true или false

Не хорошо, так как это полностью удаляет модель из вашей программы, и модель является ключом к MVC. Если вы не говорите, что активное поле является вашимПолностью модели, которая упрощает MVC.

Создайте в модели метод, который затем может вызвать метод toggle () для представления '

Нет, этонедопустимо, поскольку одним из ключей к MVC является то, что модель должна полностью игнорировать представление.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...