![]() |
|
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
Цитата:
Цитата:
Добавлено через 2 минуты Может я действительно что то не дочитал, не понял до конца всю концепцию MVC. |
|
|||||
Цитата:
|
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
Представим так, есть 5 кнопок и все эти кнопки имеют свой слушатель клик, я их создаю и кидаю на сцену в отдельном классе. Потом создаю Медиатор для этого класса, регистрирую все 5 событий которые могут посылать кнопки и переключаюсь через switch выполняя команды.
override public function handleNotification(note:INotification):void { switch (note.getName()) { case AppFacade.OPEN_WINDOW: viewComponent.addChild(window); Cookie.setCookie("OPEN_WINDOW", 10); break; case AppFacade.CLOSE_WINDOW: viewComponent.removeChild(window); Cookie.setCookie("CLOSE_WINDOW", 11); break; case AppFacade.EFFECT_WINDOW: Cookie.setCookie("EFFECT_WINDOW", 12); break; case AppFacade.TRANSITION_IN: Cookie.setCookie("TRANSITION_IN", 13); break; case AppFacade.TRANSITION_OUT: Cookie.setCookie("TRANSITION_OUT", 14); break; } } К тому же, при удалении спрайта из Медиатора, сам компонент все еще висит в памяти. Если удалить таким образом Добавлено через 5 часов 9 минут Ах да! По моему начинаю понимать что к чему. На каждую вьюшку (компонент) создаю свой медиатор, то есть даже одна кнопочка сама по себе не может участвовать в фреймворке без посредника - медиатора. Это прежде всего полезно тем, что мы можем в будущем менять кнопки (классы) как хотим, без затрагивания всего кода и инициализация пройдет автоматически с заранее подготовленным медиатором. И что самое интересное, штатные оповещения (dispatchEvent) используются только внутри вьюшек (компонентов) и нигде больше. Это придает гибкость приложению. Все медиаторы, будто главный или последний, должны регистрироваться в команде. Прокси могут только оповещать, отправлять события но не принимать. Полностью изолированный класс от всей системы. В команду можно прописать сколько угодно прокси и медиаторов, зависимо от логики приложения, архитектуры. В итоге я пришел к тому, что PureMVC действительно очень прост в изучении, логичен и очень гибкий инструмент. Прошло 5 дней и он как на ладони) Осталось только начать и творить по принципу Пюре. |
|
|||||
Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
|
Слегка касался PureMVC и видел некоторые примеры, где медиатор инициализируется при создании представления прямо в коде представления. Как я понимаю, это не есть здорово?
|
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
PureMVC и здорово не пишутся в одном предложении. Может оно вообще вам не надо?
__________________
Отряд Котовскага |
|
|||||
Цитата:
Цитата:
Есть к примеру медиатор попапов. То что зарегистрировалось в фасаде пусть там и висит, есть не просит. (в угоду производительности конечно можно разные варианты применять, но регистрация/дерегистрация медиаторов, команд, прокси в пюре - часто тупой оверхед ненужный). А вот сами виды - да, можно прятать, дестроить, что угодно с ними делать. Но опять же. Без предыдущего утверждения - этот момент будет не всегда оправдан. Т.е. если медиатор == вью-обжект - тогда как бы придется регистрировать или убирать. Но ЗАЧЕМ???? //****************** Итого: Команда - одна команда ОДНО действие с ОДНИМ уровнем абстракции, с ОДНИМ срезом логики. Пишет данные в прокси. Слушает нотификации кликов и прочей мути из медиаторов. Прокси - один прокси умеет работать с НЕСКОЛЬКИМИ дата-обжектами. Через паблик методы принимает данные от команд. Шлет нотификации медиаторам. Медиатор - один медиатор умеет работать с НЕСКОЛЬКИМИ вью-обжектами. Слушает нотификации из прокси. Шлет нотификации командам. Медиаторы, прокси, команды - зарегистрировал один раз и пусть живут. Если есть необходимость их убирать из фасада - скорее всего архитектура косая. (Я не беру в учет супер круто написанный проект в котором везде вместо i++ - стоит ++i и прочая муть, и все-равно для оптимизации производителоьности вот прямо ппц как необходимо это сделать). Если не для производительности а по логике - нафиг такую логику. Добавлено через 7 минут И еще один момент меня колбасит ппц как. То что вы юзаете пюре абсолютно не значит что ВСЁ должно быть наследниками классов пюре. Регистрацию команд или медиаторов проще вынести в отдельный какой-то менеджер. А дерево медиаторов это имхо просто опа неподдерживаемая.
__________________
Кто к нам с чем для чего - тот у нас того от того. Последний раз редактировалось Dukobpa3; 30.10.2013 в 01:12. |
|
|||||
Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
|
Цитата:
Цитата:
Цитата:
Абсолютно не согласен. Пюре же дает механизм нотификаций, т.е. мы избавлены от привязки к стандартной модели событий и их баблингу: кто подписался на сообщение, тот его и будет обрабатывать. И совсем не обязательно элементом дерева медиаторов знать друг о друге: уничтожил вью, уничтожил медиатор. Или вы о чем-то другом? Добавлено через 10 минут Цитата:
|
|
|||||
Я думаю пюре было бы приятнее если бы в нем был не один обсервер а три:
m -> v v -> c c -> c Было бы более кошерное мвц, которое можно и с такой архитектурой фреймворка организовать, но всё-таки лучше если еще и технически как-то ограничено.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Цитата:
Цитата:
Добавлено через 2 минуты Было бы лучше вообще без обсервера, в той реализации в которой он есть.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Цитата:
Вью-обжекты пусть создаются пересоздаются и умирают. А с медиаторами этого делать не обязательно. Хотя есть примеры, вон как с редактором мультиоконным, где это оправданно. В массе же своей - нет. Цитата:
Поэтому для меня в этом контексте регистрация медиатора == его пересоздание. А будет это новый екземпляр или тот который где-то в пуле пролежал - не суть важно.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:01. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|