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

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


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

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

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


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

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

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

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

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

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

11
задан Datoraki 9 May 2011 в 13:59
поделиться