Шаблон MVC: что лучше? Для представлений или контроллеров для создания и ссылки на другие? - PullRequest
11 голосов
/ 08 мая 2011

Мы создаем довольно большое приложение Swing, которое должно реализовать шаблон MVC.Приложение в настоящее время выглядит так:


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

Существует также немало контроллеров, которые полностью отделены друг от друга.Каждый контроллер принадлежит представлению.Каждое представление создает свой собственный контроллер и добавляет контроллер в качестве прослушивателя для пользовательского ввода.Контроллеры получают события из представлений, а затем модифицируют модель с помощью статических методов моделей.Когда представления отправляют события, которые не влияют на модель, но влияют только на представления, представления сами заботятся об этих событиях - без информирования контроллеров о событиях.То есть контроллеры совершенно не знают о представлениях, а цель контроллеров - заботиться только о манипулировании моделью.| EDIT: контроллеры в настоящее время являются приложениями к своим представлениям;они содержат только логику для обработки событий.То есть контроллеры не являются компонентами сами по себе и не содержат компонентов.Они реализованы так же, как и в следующем примере: Пример MVC |

Модель в приложении очень пассивна и даже не имеет прослушивателей (она представляет базу данных).Он получает обновления от контроллеров.


В этом примере представления владеют контроллерами.Было бы лучше в общем случае, если контроллеры владели и создавали представления, и если один позволял представлениям не знать контроллеров, а не наоборот?В таком случае, почему?Как бы это было разработано?Если нет, то есть ли лучший дизайн, в котором контроллеры все еще не знают о представлениях?Или, может быть, лучший из них - ни один из них?

РЕДАКТИРОВАТЬ:

Как указано в Исходное определение MVC :

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

Так что этопо крайней мере возможный способ сделать это (это допустимый шаблон MVC), но главный вопрос остается;что лучше и как будет выглядеть лучший дизайн?Особенно когда имеешь дело со многими контроллерами, которые тесно связаны с их уважительными взглядами?

РЕДАКТИРОВАТЬ: Еще один пример представления, которое ссылается на контроллер: Пример Oracles

1 Ответ

7 голосов
/ 08 мая 2011

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

...