Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Как проектировать объекты с MVC? (http://www.flasher.ru/forum/showthread.php?t=170894)

yurchik_cool 04.11.2011 12:18

Как проектировать объекты с MVC?
 
Доброе время суток!
Разбираться с шаблоном проектирования 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

Цитата:

Сообщение от etc (Сообщение 1044139)
4. Много контроллеров, моделей и вьюшек.

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

etc 06.11.2011 18:48

Цитата:

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

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

yurchik_cool 06.11.2011 23:54

Цитата:

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

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

Psycho Tiger 07.11.2011 01:22

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

etc 07.11.2011 14:57

Цитата:

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

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

fish_r 07.11.2011 21:14

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

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

yurchik_cool 08.11.2011 12:21

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


Часовой пояс GMT +4, время: 23:50.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.