Новичок MVC: хороший или плохой дизайн триады? - PullRequest
2 голосов
/ 01 марта 2012

Академически, я знаком с парадигмой MVC, но практически я новичок. Я реализую свое первое «настоящее» приложение MVC (видеоплеер в AS3).

Я создаю плейлист (как боковую панель для видеоплеера). Плейлист можно прокручивать, и когда вы наводите курсор на элемент, он поворачивается (расширяется), чтобы показать больше информации. Ничего волшебного.

Теперь появятся десятки элементов списка воспроизведения. Мне интересно, как управлять фактическими M, V и C здесь.

Итак, у меня есть экземпляр ItemModel, ItemView и ItemController для каждого элемента списка воспроизведения. Когда я хочу добавить новый элемент в список воспроизведения, должен ли я вручную создавать экземпляры новых ItemModel, ItemView и ItemController, связывать их все, размещать там, где они должны идти, и [опционально] висеть на ссылках на них?

Вместо этого я думаю о создании класса Item, который является простой оболочкой для триады MVC. Затем любые взаимодействия клиента с триадой должны быть делегированы оболочкой. В этом случае пункт «обертка» отвечает за

  1. Создание триады MVC
  2. Делегирование событий в View.

Это разумно? Extensible? Типичные? Это анти-паттерн?

В более крупной системе с большим количеством объектов я мог видеть, как я принимаю парадигму «MVCW» (где «W» является таким оберткой для каждой триады), поэтому 4 класса в форме XyzModel, XyzView, XyzController и Xyz (или XyzWrapper, или XyzObject, или любой другой).

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

Мотивация всего этого заключается в том, что кажется немного глупым вручную создавать 3 новых объекта для каждой новой «вещи», которая мне нужна (особенно в случае, когда взаимодействие с клиентом будет настолько минимальным). Я подозреваю, что это просто ошибка в моем восприятии парадигмы MVC, и что после исправления я не только пойму, почему «Обертка» является плохой идеей, но и выйду с пониманием того, как лучше управлять фактическими объектами в Триада.

Может быть, мой подход к дизайну полностью неверен, и это корень моей путаницы.

Или, может быть, это особый случай, когда да, фактически производство 3 экземпляров на элемент списка является правильной процедурой.

Какой совет?

1 Ответ

0 голосов
/ 07 марта 2012

Оказывается, мое понимание того, когда и где использовать Модели, Представления и Контроллеры, было несколько ошибочным. Например, я получил только ItemView и ItemModel - все они обрабатываются одним экземпляром PlaylistController.

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

...