Подтвердить что ты не робот

Модель MVC: что лучше? Чтобы представления или контроллеры могли создавать и ссылаться на другие?

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


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

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

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


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

EDIT:

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

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

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

EDIT: Другой пример представления, который ссылается на контроллер: Пример оракула

4b9b3361

Ответ 1

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