![]() |
MVC. Контроллеры
Здравствуйте.
Решил попробывать написать проект и использованием MVC-модели. Если я все правильно понял, Модель - это хранилище данных, ссылки которые раздаются вьюверам. Вьюверы в свою очередь обновляют данные когда изменились данные в модели. Контроллер - это механизм который создает вьюверы, модели, а так же осуществляет создание связей между ними. Знаю что глобальный класс должен передавать в главный контроллер ссылку на себя и все но у меня пока немного не так. Пока создаю модель без вьюверов, хочу пройти сначало по моделям с контроллерами. основной класс Код AS3:
Код AS3:
Код AS3:
P.s. Силой святого компилятора призываю к обсуждению Babylon =) |
Цитата:
Контроллер имеет ссылку на Модель. Модель имеет только на Вьювер. Вьювер имеет на Модель и на Контроллер. |
Цитата:
|
Цитата:
2ТС, прочтите это. |
Цитата:
|
Модель это не просто хранилище данных, модель - это состояние программы, которое вполне может изменяться и самостоятельно (действие гравитации в игре, нанесение урона юнитам стоящим в огненной луже, изменение индексов на онлайн бирже)
Модель описывает всю логику программы, высылает уведомления при возникновении некоторых событий. Модель имеет интерфейс для чтения/внесения изменений в свой мирок. Модель ничего не знает ни про визуализатор, ни про контроллер. Визуализатор - подключаемый модуль для отображения модели. Он имеет ссылку на модель. Визуализаторов может быть несколько, они могут быть разными (2д, 3д) и все они сразу могут отображать одну модель. Визуализатор читает модель, слушает её события изменения, обновляет себя сам в соответствий с текущей ситуацией в отображаемой им модели. Визуализатор слушает действия пользователя и высылает их события. Вьювер так-же имеет некоторый интерфейс, он может быть заморожен контроллером при выполнении какой-то операций. Контроллер имеет ссылки на оба компонента. Он приостанавливает ход выполнения в модели, добавляет новых игроков на бирже, активирует дополнительные режимы. Контроллер слушает визуализатор на предмет действия пользователя, анализирует и принимает решения по изменению модели. Имхо, на истину не претендую, так делаю сам. |
Спасибо Tails, доходчиво написано.
То-есть по сути, модель это и есть модель со всеми вытекающими ему свойствами, может сама видоизменяться но не участвует на прямую с внешними процессами, за это отвечает контроллер. Но остается открытым мой вопрос, контроллер получил событие создать новый контроллер, каким образом он это делает? |
Есть глобальная модель, для описания всех необходимых данных в своём мире, она может создавать дополнительные под-модели. Аналогично и для вьюшки с контроллером.
Вы в главном коде единожды создаёте глобальные: модель, вьювер и контроллер, а те уже сами по ходу выполнения решают, что им нужно. Главный контроллер может создать дополнительные под-контроллеры для сохранения/загрузки файла, вьювер может создавать дополнительные под-вьюверы для отображения бэграунда/юнитов и т.д. пс. Выше стоящий контроллер должен принимать решение о смене своих детей - под-контроллеров. |
Я для себя использовал иерархический MVC, То есть у меня не было обособленных трио, у меня были контроллеры с некоторым уровнем вложенности, в главном контроллере были созданы вьюшки во вьюшках; были созданы в нем же модели в моделях. То есть каждой вьюшке передаем либо какую-то модель в главной модели, либо всю модель целиком.
Добавлено через 44 секунды Словом, выбирайте то, что вам будет удобнее. Эта штука у каждого разработчика своя. |
Понял. Буду пробывать)
То-есть примерно так Код AS3:
Цитата:
|
| Часовой пояс GMT +4, время: 20:04. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.