10 советов по PureMVC
Декабрь 27th, 2007 написал injun #576871
Бороздя то, что должен бороздить каждый флэшер и флексер, увидел пост товарища Йенса Краузе с 10 советами по работе с PureMVC (Рост, аууу!!!):
10 tips for working with PureMVC
1. Think in (Pure)MVC
Как я начала использовать PureMVC? Очень коротко: только начав думать на (Pure)MVC! Кто в танке, то PureMVC - это классическая модель "Model-View-Controller". Используя Фасад (Facade-pattern) вы напрямую не задействуете "актёров", но каждый отдельный член PureMVC имеет свою чёткую и определённую роль (более подробно о MVC во флэше можете ознакомиться у товарища fla_master прямо вот по этой ссылке):
- Proxies = Модель
- Mediator и его ViewComponents = Представление
- Commands = Контроллер
2. Create an API for View Components
View Component должен представлять собой стандартный UI-компонент (например DataGrid) и ни в коем разе не используйте публичные методы напрямую. Лучше всего создавать API.
Одно из хороших возможностей PureMVC - это нейтральность в отношении использующейся технологии. Ну, например, я создам "pure" флэш-приложение, основанное на PureMVC без использования flex-фреймуорка. Потом это приложение будет портировано в AIR-приложение. ViewComponents изменятся flex-фреймуорком, но не медиаторы (mediator) и другие "актёры" PureMVC.
3. Use one Mediator for multiple View Components
Для большей координации используйте только один медиатор (mediator) для View Component. Другими словами: не все Views нуждаются в медиаторе (mediator). Например, возьмём ApplicationControlBar содержащий TextInput и Button или ещё что. Затем создадим один медиатор (mediator) для ApplicationControlBar, обзовём его ApplicationControlBarMediator и сошлёмся на несуществующий компонент…
4. Let’s Events bubble up
Что случится, если вы не хотите использовать несколько View Components с медиатором (mediator)? Да ничего - используйте для контроля пользовательского интерактива с несколькими View Components пузырьковые эвенты уноследованные от "деток" View Component.
5. Communicate using Notifications as often as possible
Уведомления PureMVC - это "Events". Для коммуникации между ярусами дерева Модели, Представления и Контроллера используйте Notifications для всевозможных сценириев "communication from -> to":
- Mediator -> Proxy
- Proxy -> Mediator
- Proxy -> Command
- Commands -> Mediator
И по возможности забудьте, что есть возможность изменять Proxy (Модель) через Mediator (Представление) без использования Command (Контроллера)!
6. Use Commands / MacroCommands as often as possible
Commands выполняют всю работу на стороне Контроллера: получают и взаимодействуют с Проксями, взаимодействуют с Медиаторами (mediators) и выполняют команды. Если команда исползуется однажды или имеет пару строк кода - используйте её везде, где возможно - для этого вам необходимо только отправить Уведомление и всё! В будущем, это позволит расширить возможности Commands для более комплексных действий. И, это важно, всегда помните того "актёра", что может изменять Прокси (Модель)! Также, используйте MacroCommands для выполнения нескольких SubCommands.
7. Use Remote Proxy to send and receive server-side data
Для отправки и получения данных между уровнями приложения воспользуйтесь Проксями, называющимися "Remote Proxies". Это не специальные Прокси PureMVC, это такие же про Прокси, но призванные организовывать серверные вызоры типа HTTPServices, RemoteObjects или чего-то ещё подобного.
8. Remove unused Mediators
В некоторых ситуациях вы больше не будете использоваться Медиатор (mediator) и его View Components. Так удаляйте его к чертям используя facade.removeMediator(MyMediator.NAME); также воспользуйтесь методом destroy() чтобы убить ViewComponent его listeners, timer, references и etc.
9. The Power of VO’s (Value Objects)
View Components нет нужды знать, что такое Фасад, и вообще что-либо о приложении PureMVC. Это означает, что View Components не имеет доступа к Модели и данным, которые она хранит. Для того, чтобы обойти это и всё же ссылаться на данные, испоьзуйте Value Objects (VO). VO - это не "актёр" ядра PureMVC, но обладают flex-примочкой "Data Binding", что делает эти объекты очень мощными - можно изменять данные, не нарушая правил.
10. Courseware available
Клифф Холл выполнил всю работу - вы найдёте великолепную документацию: "Framework Overview", "Best Practices" и "Conceptual Diagram". Ну и конечно же полезные Courseware!
>
RSS-фид новых сообщений

Тут я! Продолжение цикла статей по PureMVC следует! Сразу после НГ
Кстати, по существу этих десяти:
5. Communicate using Notifications as often as possible
Уведомления PureMVC - это “Events”. …
В принципе, в таком кратком списке советов сравнение вполне уместное, но желающий вникнуть в PureMVC должен понять, что Notifications - это КАК “Events”, но не Events. Из этого следует несколько практических отличий в их использовании.
Первое - это описанная во втором пункте независимость PureMVC от типа приложения — Flash, Flex или AIR.
Второе — с нотификейшенами очень удобно передавать те самые VO’s, и для этого не нужно создавать доп. расширяющие классы (как в случае с Events).
Я это буду подробно расписывать.
Вообще - очень хорошая подборка советов, своеобразный чеклист для разработчика, уже использующего PureMVC.
Ну да, ты прав. Как эвенты.
Hi Aleksey,
thanks for your translation
-Jens [aka sectore]
–
http://www.websector.de/blog/
Thank you, Jens!
[…] This post is translated into German: “10 Tips für das Arbeiten mit PureMVC”, into Russian: “10 советов по PureMVC”, into Chinese: PureMVC?????? and into French: “10 trucs pour d?velopper avec PureMVC”.Thanks a lot to Aleksey, duzengqiang and Eric for the translations into Russian, Chinese and French! […]