Тема: [PureMVC] PureMVC Медиаторы
Показать сообщение отдельно
Старый 22.08.2013, 01:28
namespaces вне форума Посмотреть профиль Отправить личное сообщение для namespaces Найти все сообщения от namespaces
  № 13  
Ответить с цитированием
namespaces
 
Аватар для namespaces

Регистрация: Jan 2013
Сообщений: 126
Цитата:
Сообщение от PainKiller Посмотреть сообщение
везде по разному,
Представим так, есть 5 кнопок и все эти кнопки имеют свой слушатель клик, я их создаю и кидаю на сцену в отдельном классе. Потом создаю Медиатор для этого класса, регистрирую все 5 событий которые могут посылать кнопки и переключаюсь через switch выполняя команды.

Код AS3:
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;
 
			}
		}
Правильно делать так? Если управлять все эти спрайты через один Медиатор и обмениваться 20-30 сообщениями, по моему что то не так(
К тому же, при удалении спрайта из Медиатора, сам компонент все еще висит в памяти.
Если удалить таким образом
Код AS3:
viewComponent.removeChild(window);
Добавлено через 5 часов 9 минут
Ах да! По моему начинаю понимать что к чему.
На каждую вьюшку (компонент) создаю свой медиатор, то есть даже одна кнопочка сама по себе не может участвовать в фреймворке без посредника - медиатора. Это прежде всего полезно тем, что мы можем в будущем менять кнопки (классы) как хотим, без затрагивания всего кода и инициализация пройдет автоматически с заранее подготовленным медиатором.
И что самое интересное, штатные оповещения (dispatchEvent) используются только внутри вьюшек (компонентов) и нигде больше. Это придает гибкость приложению.
Все медиаторы, будто главный или последний, должны регистрироваться в команде.
Прокси могут только оповещать, отправлять события но не принимать. Полностью изолированный класс от всей системы.
В команду можно прописать сколько угодно прокси и медиаторов, зависимо от логики приложения, архитектуры.

В итоге я пришел к тому, что PureMVC действительно очень прост в изучении, логичен и очень гибкий инструмент. Прошло 5 дней и он как на ладони) Осталось только начать и творить по принципу Пюре.