PDA

Просмотр полной версии : Как проектировать объекты с MVC?


yurchik_cool
04.11.2011, 12:18
Доброе время суток!
Разбираться с шаблоном проектирования MVC стал недавно. Обнаружил, что программирую как старая бабулька. В связи с этим решил переписать часть своего проекта с использованием MVC шаблона.

Примерная постановка задачи (так как оно есть сейчас):
1. Есть набор различных по своей сущности объектов сцены приложения (надписи, картинки, внешние SWF и прочее, прочее...).
2. Эти объекты имеют как различные свойства и методы так и одинаковые.
3. Взаимодействие с пользователем примерно во всех объектах одинаковое (перемещение, поворот, реакция на клавиши и их сочетания)
4. Каждый из объектов является экземпляром отдельного класса и включает в себя методы, свойства, слушатели и т.д. и т.п.
Вопрос: Как правильно построить проект с учётом MVC?


Варианты которые я на данный момент рассматриваю как возможные:
1. Один Контроллер, Одна модель, Много вьюшек (но тогда модель будет для каждого отдельного объекта сцены хранить имена ненужных свойств)
2. Один контроллер, одна вьюшка, много моделей (но тогда вьюшка получится очень сложной для отображения объекта в зависимости от модели)
3. Один контроллер, много моделей, много вьюшек (этот вариант не лучше чем тот который есть сейчас, просто несколько упростит код каждого класса).

Пожалуйста подскажите как лучше поступить. Если не сложно, то с обоснованием!
Заранее благодарен!

etc
06.11.2011, 16:03
4. Много контроллеров, моделей и вьюшек.

yurchik_cool
06.11.2011, 18:17
4. Много контроллеров, моделей и вьюшек.

На мой взгляд это не очень хороший подход, т.к. в большинстве случаев каждый контроллер будет писаться копи-пастом. Особенностей обработки объектов сцены не так уж и много их можно решить расширением некоторого базового класса контроллера. Исходя из этого контроллер будет один. (это мой взгляд на вещи, если есть аргументы в поддержку размножения классов контроллеров, прошу высказываться)

etc
06.11.2011, 18:48
На мой взгляд это не очень хороший подход, т.к. в большинстве случаев каждый контроллер будет писаться копи-пастом. Особенностей обработки объектов сцены не так уж и много их можно решить расширением некоторого базового класса контроллера. Исходя из этого контроллер будет один. (это мой взгляд на вещи, если есть аргументы в поддержку размножения классов контроллеров, прошу высказываться)

Ну если у вас контроллеры занимаются одним и тем же, то да, копипаст. Надо ещё определиться, что в вашем понимании контроллер.

yurchik_cool
06.11.2011, 23:54
Ну если у вас контроллеры занимаются одним и тем же, то да, копипаст. Надо ещё определиться, что в вашем понимании контроллер.

В данном случае контроллер будет заниматься прослушиванием вьюшки и записью данных в модель.

Psycho Tiger
07.11.2011, 01:22
Копипаст кода неплохо лечится наследованием. Ну, например ItemShopController extends AbstractShopController.

etc
07.11.2011, 14:57
В данном случае контроллер будет заниматься прослушиванием вьюшки и записью данных в модель.

Конкретной вьюшки и конкретной модели. Код вовсе не одинаков будет.

fish_r
07.11.2011, 21:14
Описание задачи слишком уж обще. Так можно описать любую программу.

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

yurchik_cool
08.11.2011, 12:21
Всем спасибо! Выводы сделаны, буду реализовывать.