PureMVC and Papervision

15,307 views
15,243 views

Published on

Building a flash application utilizing both PureNVC and Papervision3D frameworks.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
15,307
On SlideShare
0
From Embeds
0
Number of Embeds
487
Actions
Shares
0
Downloads
30
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PureMVC and Papervision

  1. 2. <ul><li>Введение </li></ul><ul><li>Немного теории </li></ul><ul><ul><li>Концептуальная диаграмма </li></ul></ul><ul><ul><li>Суть фреймворка </li></ul></ul><ul><ul><li>Как это работает </li></ul></ul><ul><li>Пример: IT Developers v1 </li></ul><ul><li>Actionscript 3 [Multicore version] </li></ul><ul><ul><li>Pipes Util </li></ul></ul><ul><ul><li>Пример : IT Developers v 2 </li></ul></ul><ul><ul><li>Ньюансы </li></ul></ul><ul><li>Немного о недостатках </li></ul><ul><li>Выводы </li></ul>Меню:
  2. 3. open-source фреймворк для создания приложений базирующихся на мета-паттерне MVC – Model, View, Controller PureMVC
  3. 4. <ul><li>open-source фреймворк для создания приложений </li></ul><ul><li>базирующихся на мета-паттерне MVC – Model, View, </li></ul><ul><li>Controller </li></ul><ul><li>содержит множество других паттернов внутри </li></ul><ul><li>себя: Façade, Mediator, Proxy, Command, etc. </li></ul><ul><li>имеет слабо связанную архитектуру </li></ul><ul><li>легко расширяем </li></ul><ul><li>хорошо задокументирован </li></ul>PureMVC
  4. 5. планировался как фреймворк, независимый от платформы и языка, хотя весь код в документации И примеры написаны на Actionscript 3 , существуют версии для AS2, Java, C#, PHP, etc. PureMVC
  5. 6. <ul><li>планировался как фреймворк, независимый от </li></ul><ul><li>платформы и языка, хотя весь код в документации </li></ul><ul><li>И примеры написаны на Actionscript 3 , существуют </li></ul><ul><li>версии для AS2, Java, C#, PHP, etc. </li></ul><ul><li>не использует Actionscript Event Model </li></ul><ul><li>не использует Flex Libraries ( т.е. может </li></ul><ul><li>использоваться для Flash проектов ) </li></ul>PureMVC
  6. 8. Façade, Model, View, Controller – 4 Singletons (Singleton – только один экземпляр объекта может быть создан )
  7. 9. Façade – инициализирует и предоставляет прозрачный доступ для Model, View и С ontroller. Модель представляют прокси классы , Вид – медиаторы , Контроллер – команд ы. Медиаторы, прокси и комманды используют Façade для доступа к друг другу и взаимодествия.
  8. 10. Элементы системы взаимодейтсвуют между собой с помощью - Notifications (используется Observer паттерн) Прокси могут посылать события, но не могут их слушать, медиаторы могут и посылать и слушать события, а комманды могут не только посылать события, но и вызываться событием.
  9. 11. 1. Проектирование, нужно четко разобраться в приложении и сразу разграничивать роли и логику между моделью, видом и контроллером 2. Создание визуальн ых элементов – view components пранировать как отдельный компонент, продумать его API , создать ряд событий для отлавливания его изменений 3. Создание сервисов для общения с сервером – отсылки и получения данных, а также VO объектов Как легко написать приложение на PureMVC
  10. 12. 4. Продумать какие основн ые действия будет выполнять приложение – функциональность. Как легко написать приложение на PureMVC
  11. 13. 4. Продумать какие основн ые действия будет выполнять приложение – функциональность. ... т.е все как обычно – спроектировать, создать визуальный мокап, сервисы (если есть общение с сервером) и продумать, что будет делать приложение... Как легко написать приложение на PureMVC
  12. 14. 4. Продумать какие основн ые действия будет выполнять приложение – функциональность. ... т.е все как обычно – спроектировать, создать визуальный мокап, сервисы (если есть общение с сервером) и продумать, что будет делать приложение... А вот теперь взять в руки инструмент... Как легко написать приложение на PureMVC
  13. 15. <ul><li>Создаем Façade для нашего приложения </li></ul><ul><ul><li>extends PureMVC Façade and implements Ifacade interface </li></ul></ul><ul><ul><li>определяем метод getInstance() который возвращает единственный экземпляр фасада </li></ul></ul><ul><ul><li>описываем имена для всех основных сообщений ( notifications) приложения </li></ul></ul><ul><ul><li>инициализируем контроллер (перегружаем initializeController метод) и мапим события к коммандам </li></ul></ul><ul><ul><li>определяем метод startup который запускает приложение и обычно связан с коммандой StartupCommand </li></ul></ul><ul><ul><li>Инициализируем и вызываем startup в приложении (если во Flex, то обычно в creationComplete) </li></ul></ul>
  14. 16. Все!
  15. 17. Все! ... Работает?
  16. 18. Все! ... Работает?... А по идее должно)
  17. 19. Все! ... Работает?... А по идее должно) 2. Создать Proxy классы для разного типа данных в которых мы будем вызывать уже созданные сервисы
  18. 20. Все! ... Работает?... А по идее должно) 2. Создать Proxy классы для разного типа данных в которых мы будем вызывать уже созданные сервисы 3. Создать Mediators – которые слушают и обрабатывают события визуальных компонентов, а также изменяют их
  19. 21. Все! ... Работает?... А по идее должно) 2. Создать Proxy классы для разного типа данных в которых мы будем вызывать уже созданные сервисы 3. Создать Mediators – которые слушают и обрабатывают события визуальных компонентов, а также изменяют их 4. Создать С ommands для запуска приложения, инициализации и остальной логики приложения - simple commands - macro commands
  20. 22. Все! ... Работает?... А по идее должно) 2. Создать Proxy классы для разного типа данных в которых мы будем вызывать уже созданные сервисы 3. Создать Mediators – которые слушают и обрабатывают события визуальных компонентов, а также изменяют их 4. Создать С ommands для запуска приложения, инициализации и остальной логики приложения - simple commands - macro commands 5. Добавить обмен событиями ( notifications )
  21. 23. Важное в PureMVC Реализация первостепенной мечты каждого программиста, начинающего работать с чем-либо новым или на новом рабочем месте )
  22. 24. Модульные приложения А что если ядер несколько? Трубопровод, как выход из ситуации
  23. 25. public static function getInstance( key:String ):ApplicationFacade { if (instanceMap[key] == null) instanceMap[key] = new ApplicationFacade(key); return instanceMap[key] as ApplicationFacade; } PureMVC Actionscript 3 Multicore Использование мультитона вместо синглтона
  24. 26. PureMVC Actionscript 3 Multicore Pipes Ну и собственно трубопровод
  25. 27. PureMVC Actionscript 3 Multicore Pipes Вариант посложнее: система водоканалов
  26. 28. PureMVC Actionscript 3 Multicore Pipes Существующее приложение не нужно переделывать!
  27. 29. <ul><li>PureMVC Actionscript 3 Multicore Pipes </li></ul><ul><li>Существующее приложение </li></ul><ul><li>не нужно переделывать! </li></ul><ul><li>для приложения, а также для каждого из модулей создается специальный соединяющий медиатор – Junction </li></ul>
  28. 30. <ul><li>PureMVC Actionscript 3 Multicore Pipes </li></ul><ul><li>Существующее приложение </li></ul><ul><li>не нужно переделывать! </li></ul><ul><li>для приложения, а также для каждого из модулей создается специальный соединяющий медиатор – Junction </li></ul><ul><li>- для главного приложения создаются и регистрируются так наз ываемые TeeSplit ( для труб по которым идут сообщения от главного приложения) и TeeMerge ( для труб по которым идут сообщения от модулей к главному приложению) </li></ul>
  29. 31. <ul><li>PureMVC Actionscript 3 Multicore Pipes </li></ul><ul><li>Существующее приложение </li></ul><ul><li>не нужно переделывать! </li></ul><ul><li>для приложения, а также для каждого из модулей создается специальный соединяющий медиатор – Junction </li></ul><ul><li>- для главного приложения создаются и регистрируются так наз ываемые TeeSplit ( для труб по которым идут сообщения от главного приложения) и TeeMerge ( для труб по которым идут сообщения от модулей к главному приложению) </li></ul><ul><li>- на соединители ставятся слушатели для входящих сообщений </li></ul>
  30. 32. PureMVC Actionscript 3 Multicore Pipes <ul><li>Создаем Junction медиаторы для приложения и модулей, которые будут соединяться трубами, одна труба для сообщений от модуля к приложению, одна – наоборот. </li></ul>
  31. 33. PureMVC Actionscript 3 Multicore Pipes <ul><li>Создаем Junction медиаторы для приложения и модулей, которые будут соединяться трубами, одна труба для сообщений от модуля к приложению, одна – наоборот. </li></ul><ul><li>Получатель должен иметь слушатель – pipe listener, для обработки входящих сообщений </li></ul>
  32. 34. PureMVC Actionscript 3 Multicore Pipes <ul><li>Создаем Junction медиаторы для приложения и модулей, которые будут соединяться трубами, одна труба для сообщений от модуля к приложению, одна – наоборот. </li></ul><ul><li>Получатель должен иметь слушатель – pipe listener, для обработки входящих сообщений </li></ul><ul><li>Для отправки сообщения используется метод sendMessage(), метод Junction медиатора, который посылает объекты типа Message </li></ul>
  33. 35. PureMVC Actionscript 3 Multicore Pipes <ul><li>Создаем Junction медиаторы для приложения и модулей, которые будут соединяться трубами, одна труба для сообщений от модуля к приложению, одна – наоборот. </li></ul><ul><li>Получатель должен иметь слушатель – pipe listener, для обработки входящих сообщений </li></ul><ul><li>Для отправки сообщения используется метод sendMessage(), метод Junction медиатора, который посылает объекты типа Message </li></ul><ul><li>После получение сообщения оно легко превращается в notification внутри принимающего приложения </li></ul>
  34. 36. Список литератур ы для прочтения www.puremvc.org + представленная документация, примеры с исходным кодом, форум http://www.joshuaostrom.com http://www.websector.de/blog http://www.nutrixinteractive.com/blog/ http://flash-ripper.com/
  35. 37. Спасибо за внимание!

×