Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.08.2013, 20:23
namespaces вне форума Посмотреть профиль Отправить личное сообщение для namespaces Найти все сообщения от namespaces
  № 1  
Ответить с цитированием
namespaces
 
Аватар для namespaces

Регистрация: Jan 2013
Сообщений: 126
Arrow PureMVC Медиаторы

Начал учить PureMVC и походу возникли некоторые вопросы.
Правильно ли пихать все Медиаторы в главный Медиатор приложения, регистрируя их и оповещать все вместе?
Если будут компоненты 20-30 шт. скажем, разумно ли все это обрабатывать в одном классе?
Что то мне трудно дается отношение между Медиатором и всей системы(

Старый 18.08.2013, 11:55
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Медиатор служит прослойкой между его видом и приложением. Он знает какие события генерирует вид, как преобразовать их для приложения и как оповестить приложение о событии, а также получает ссылку на модель для своего вида. Для однотипных видов, медиаторы могут быть также однотипны. Но, в любом случае, для каждого экземпляра вида, создается отдельный экземпляр соответствующего ему медиатора.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 18.08.2013, 23:25
namespaces вне форума Посмотреть профиль Отправить личное сообщение для namespaces Найти все сообщения от namespaces
  № 3  
Ответить с цитированием
namespaces
 
Аватар для namespaces

Регистрация: Jan 2013
Сообщений: 126
Я это знаю)
Вопрос был - правильно ли разместить (регистрировать) все другие медиаторы в один главный Медиатор?
То есть управлять только через главный Медиатор.
Примерно так:

Код AS1/AS2:
public function MainMediator()
		{
			super(NAME);
 
			facade.registerMediator( new IndexPage().show);
			facade.registerMediator( new HomePage().show);
			facade.registerMediator( new NavPage().show);
			facade.registerMediator( new AboutPage().hide);
			facade.registerMediator( new ServicePage().hide);
			facade.registerMediator( new PortfolioPage().hide);
			facade.registerMediator( new ContactPage().hide);
		}

Старый 19.08.2013, 00:12
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Нет неправильно. Даже если закрыть глаза, на то что так (new IndexPage().show о_О) регистрировать медиаторы даже по меркам pureMVC неправильно.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 19.08.2013, 01:09
namespaces вне форума Посмотреть профиль Отправить личное сообщение для namespaces Найти все сообщения от namespaces
  № 5  
Ответить с цитированием
namespaces
 
Аватар для namespaces

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

Старый 19.08.2013, 17:01
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 6  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Я давно уже не работал с pureMVC, однако открыв свои старые исходники я обнаружил, что я так и делал, регистрировал медиатры в главном. Насколько я помню, в документации, тьюториалах, и тех примерах приложений на pureMVC, которые мне удалось найти в инете, так и делалось, поэтому мне интересно послушать, почему это неправильно :-) Еще попадался вариант где медиатры регистрировались в командах, но не знаю лучше это или нет. И да, pureMVC здесь не любят, поэтому ожидаю советы типа "вообще не следует работать с этим г..м", но надеюсь что хоть что то по существу будет сказано).


Последний раз редактировалось PainKiller; 19.08.2013 в 17:13.
Старый 19.08.2013, 21:45
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 7  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
PainKiller, ожидаемые ответы у вас правильные, pureMVC на редкость корявое решение в рамках as3 и flash platform. Я тоже уже не работал с ним лет пять.

По существу. Если вы заметили, то в этих примерах в медиаторе главного вида регистрируются медиаторы для видов, которые являются частями главного вида и уже находятся в списке отображения. Такой подход накладывает некоторые ограничения на переконфигурирование приложения, вам уже недостаточно поменять контроллер (команды инициализации главного вида и добавления новых видов в список отображения), но придется еще и править медиаторы.

Увы, я не нашел официального примера с приложением в котором виды создавались бы не все сразу при старте приложения.

Цитата:
А как по вашему должно быть правильно?
У вас медиаторы создают виды?

Цитата:
С главного медиатора я могу воздействовать на публичные свойства, методы других медиаторов.
Зачем им вообще дополнительные публичные свойства? Для взаимодействования частей приложения в pureMVC есть уведомления (notifications). Медиаторы вообще не должны знать о других медиаторах.

namespaces, суть MVC-фреймворков повысить гибкость и удобство изменения приложения во время его эволюции и роста. Это достигается, в частности, тем что части приложения независимы и ничего не знают о других частях (за исключением контроллеров).
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 20.08.2013, 00:47
namespaces вне форума Посмотреть профиль Отправить личное сообщение для namespaces Найти все сообщения от namespaces
  № 8  
Ответить с цитированием
namespaces
 
Аватар для namespaces

Регистрация: Jan 2013
Сообщений: 126
Цитата:
Сообщение от alatar Посмотреть сообщение
У вас медиаторы создают виды?
Неа. Медиаторы играют роль посредника между компонентом и контроллером.
Я так понял вы имеете ввиду, не инициализировать все медиаторы одновременно без надобности или на каждый медиатор повесить свою команду (контроллер)?

Цитата:
Зачем им вообще дополнительные публичные свойства? Для взаимодействования частей приложения в pureMVC есть уведомления (notifications). Медиаторы вообще не должны знать о других медиаторах.
Да вы правы. Я иногда вообще забываю про внутреннее уведомление фреймворка и посылаю-получаю штатным способом.

Старый 20.08.2013, 02:32
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 9  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Нет вида на экране == нет медиатора. Команда, по событию, создает и добавляет вид на экран и регистрирует его медиатор и удаляет предыдущий вид и его медиатор, если в них уже нетнадобности.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 20.08.2013, 10:33
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 10  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
alatar, спасибо за ответ.
Цитата:
Да вы правы. Я иногда вообще забываю про внутреннее уведомление фреймворка и посылаю-получаю штатным способом.
Вот это вообще зря, теряется смысл использования фреймворка. Его минусы использования как раз в том и заключаются, что на каждый чих приходится создавать кучу классов (вьюху, медиатор, команду + возможно что то еще) - это не всегда оправдано.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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