![]() |
|
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
![]() Начал учить PureMVC и походу возникли некоторые вопросы.
Правильно ли пихать все Медиаторы в главный Медиатор приложения, регистрируя их и оповещать все вместе? Если будут компоненты 20-30 шт. скажем, разумно ли все это обрабатывать в одном классе? Что то мне трудно дается отношение между Медиатором и всей системы( |
|
|||||
Медиатор служит прослойкой между его видом и приложением. Он знает какие события генерирует вид, как преобразовать их для приложения и как оповестить приложение о событии, а также получает ссылку на модель для своего вида. Для однотипных видов, медиаторы могут быть также однотипны. Но, в любом случае, для каждого экземпляра вида, создается отдельный экземпляр соответствующего ему медиатора.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
Я это знаю)
Вопрос был - правильно ли разместить (регистрировать) все другие медиаторы в один главный Медиатор? То есть управлять только через главный Медиатор. Примерно так: 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); } |
|
|||||
Нет неправильно. Даже если закрыть глаза, на то что так (new IndexPage().show о_О) регистрировать медиаторы даже по меркам pureMVC неправильно.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
А как по вашему должно быть правильно? Пожалуйста дайте мне хоть какой то совет, я уже голову переломал над этой архитектурой.
На данный момент мой код делает одно, все компоненты обрабатывает свой медиатор, главный медиатор получает ссылки на все остальные медиаторы и слушает события от всех. С главного медиатора я могу воздействовать на публичные свойства, методы других медиаторов. Мне этот вариант показался удобным. |
|
|||||
Я давно уже не работал с pureMVC, однако открыв свои старые исходники я обнаружил, что я так и делал, регистрировал медиатры в главном. Насколько я помню, в документации, тьюториалах, и тех примерах приложений на pureMVC, которые мне удалось найти в инете, так и делалось, поэтому мне интересно послушать, почему это неправильно :-) Еще попадался вариант где медиатры регистрировались в командах, но не знаю лучше это или нет. И да, pureMVC здесь не любят, поэтому ожидаю советы типа "вообще не следует работать с этим г..м", но надеюсь что хоть что то по существу будет сказано).
Последний раз редактировалось PainKiller; 19.08.2013 в 17:13. |
|
|||||
PainKiller, ожидаемые ответы у вас правильные, pureMVC на редкость корявое решение в рамках as3 и flash platform. Я тоже уже не работал с ним лет пять.
По существу. Если вы заметили, то в этих примерах в медиаторе главного вида регистрируются медиаторы для видов, которые являются частями главного вида и уже находятся в списке отображения. Такой подход накладывает некоторые ограничения на переконфигурирование приложения, вам уже недостаточно поменять контроллер (команды инициализации главного вида и добавления новых видов в список отображения), но придется еще и править медиаторы. Увы, я не нашел официального примера с приложением в котором виды создавались бы не все сразу при старте приложения. Цитата:
Цитата:
namespaces, суть MVC-фреймворков повысить гибкость и удобство изменения приложения во время его эволюции и роста. Это достигается, в частности, тем что части приложения независимы и ничего не знают о других частях (за исключением контроллеров).
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
Неа. Медиаторы играют роль посредника между компонентом и контроллером.
Я так понял вы имеете ввиду, не инициализировать все медиаторы одновременно без надобности или на каждый медиатор повесить свою команду (контроллер)? Цитата:
|
|
|||||
Нет вида на экране == нет медиатора. Команда, по событию, создает и добавляет вид на экран и регистрирует его медиатор и удаляет предыдущий вид и его медиатор, если в них уже нетнадобности.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
alatar, спасибо за ответ.
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:20. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|