Это правильный способ использования MVC в Java? - PullRequest
2 голосов
/ 17 августа 2010

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

Контроллер имеет всех слушателей представления и заботится о событиях, вызывая методы модели и представления. Модель вызывает методы представления в некоторых из своих методов.

Это плохо для обслуживания и повторного использования и должны ли все методы просмотра вызываться только в контроллере? Кроме того, я не настроил модель в качестве наблюдаемой, а контроллер и представление (я) в качестве наблюдателей, как видно из некоторых примеров. Это обычная практика?

Ответы [ 6 ]

2 голосов
/ 17 августа 2010

Я бы не связывал напрямую модель с представлением, или, по крайней мере, только в качестве особых обстоятельств (и даже в этом случае это может указывать на то, что манипулируемое состояние - это не истинное состояние модели, а состояние представления).

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

Подводя итог, контроллер вносит изменения в модель, которая уведомляет заинтересованные стороны (включая представление). В представлении есть ссылка на модель для извлечения данных.

1 голос
/ 17 августа 2010

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

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

1 голос
/ 17 августа 2010

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

0 голосов
/ 17 августа 2010

На рабочем столе Swing - хорошая библиотека графического интерфейса. Проверьте эту статью , чтобы увидеть, как это относится к MVC. Для предприятия взгляните на шаблон Model View Controller Мартина Фаулера (330) для веб-приложений. Если у вас нет его книги ( Шаблоны архитектуры корпоративных приложений ), я настоятельно рекомендую получить копию.

0 голосов
/ 17 августа 2010

На Sun.com есть хорошая статья в блоге: Разработка приложений Java SE с MVC .Он начинается с объяснения «классического» шаблона MVC, в котором представление и модель взаимодействуют напрямую друг с другом, а затем продолжается с более новым шаблоном MVC «централизованный контроллер», в котором представление и модель могут взаимодействовать друг с другом только через контроллер (отделен от взгляда).Он также содержит целевой пример Swing.

0 голосов
/ 17 августа 2010

Существует множество разновидностей MVC, поэтому я не стану называть их «неправильными».

См. http://martinfowler.com/eaaDev/uiArchs.html

Ищите один подходящий вариант и следуйте ему1006 *

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