Показать сообщение отдельно
Старый 27.04.2009, 01:02
IDimitry вне форума Посмотреть профиль Найти все сообщения от IDimitry
  № 7  
Ответить с цитированием
IDimitry
Banned

Регистрация: Mar 2009
Сообщений: 93
Сегодня снизошло озарение
Думаю, завтра добъю базовую реализацию. Сделаю наброски и можно будет снова открыть дискуссию по обсуждаемому шаблону.

Правда, запал несколько угас, так как прихожу к выводу, что "чистый" MVC - это действительно только шаблон проектирования, но в реальной реализации зачастую приходится отходить немного от "идеала" из-за обсурдности последнего ...

Пример, с которым сталкивается буквально каждый и буквально с первых строк приложения: есть базовый класс (от Sprite или MovieClip), в конструкторе которого надо запустить некий setup проекта - назовем условно initialization. Как это просто и удобно делать? - Думаю, так делают буквально все:
Код AS3:
this.addEventListener(Event.ADDED_TO_STAGE, initialization);
(проверку на stage можно еще не делать, так как вызов происходит в конструкторе, значит, на сцене базового еще нет).
Так ведь? И ниже прописываем функцию initialization ... Просто и удобно. Но это несколько противоречит рассматриваемому шаблону MVC: обслуживать события по некоим установленным шаблоном правилам должен контроллер, а вопросами инициализации (работа с данными) - модель. Ведь наш базовый класс в большинстве проектов является главным и зачастую глобальным контейнером - ну буквально Сценой. Соответственно, вывод в нем - Представление "сцены", обработка эвентов - Контроллером, правила поведения - Модель. И по правилам проектирования задавать правильнее было бы так:
Код AS3:
this.addEventListener(Event.ADDED_TO_STAGE, controller.loadedToStage);
в контроллере "сцены" прописываем
Код AS3:
public function loadToStage(event:Event = null):void {
	{reference to Model}.initialize();
}
а в модели уже производим инициализацию (initialize).
В защиту данного умозаключения (вывода) говорит также то, что непосредственно с данными "контактировать" может и должна только Модель. А фактически процесс инициализации - это как раз какие-то процессы, связанные с установками, данными и внешними данными.

Но на практике кто задумывается отдать обработку загрузки "сцены" модели, да еще таким замысловатым способом? Вот вам и цена "идеальности" шаблона. Надеюсь, нечасто прийдется сталкиваться с ситуациями, когда прийдется так проектировать только ради чистоты проектирования.

Nemo_c, спасибо за ссылки.

P.S. Сырой подход, сырые суждения, сырые выводы - просто хочу разобраться и замечательно отношусь к критике.