Знаете ли вы лучшие образцы и шаблоны проектирования для приложений Adobe Air / Flex? - PullRequest
4 голосов
/ 02 июня 2010

Я собираюсь написать приложение с Air / Flex-Framework. Я ищу лучшие практики и общие шаблоны проектирования для разработки программного обеспечения, особенно в Air / Flex. У меня есть опыт работы с этой платформой, но я никогда не имел удовольствия написать программу с нуля.

Например:

  • Я наткнулся на множество программ, написанных на Air / Flex с почти бесконечными глобальными переменными :-)
  • Большая часть программного обеспечения, которое я видел, не было объектно-ориентированным
  • Как красиво упаковать вызовы асинхронных методов?

Я знаком с общими шаблонами проектирования по гамме. Я ищу советы по разработке качественного программного обеспечения с помощью Adobe Air / Flex.

Ответы [ 4 ]

2 голосов
/ 02 июня 2010

Как и во всех «передовых методах» и «шаблонах проектирования», все зависит от того, что вы хотите сделать. Каждый ваш выбор имеет компромиссы. Хорошо понять эти компромиссы и принять решение действовать в соответствии с тем, что вам нужно развивать.

Ваш вопрос так открыт; Я мог бы написать книгу без ответа.

Несколько мыслей о ваших пунктах:

Я наткнулся на множество программ, написанных на Air / Flex с почти бесконечными глобальными переменными :-)

Это распространенный подход при использовании инфраструктуры Cairngorm, в которой используется ModelLocator. Во многих приложениях ModelLocator превращается в один большой глобальный объект значений, используемый повсеместно в приложении. Я говорю о том, как я справляюсь с этим сообщением в блоге: http://www.jeffryhouser.com/index.cfm/2008/3/27/Learning-Cairngorm-Part-6-Dealing-with-the-Singleton

Большая часть программного обеспечения, которое я видел, не была объектно-ориентированной

Несмотря на весь интерес к объектно-ориентированному программированию, я никогда не видел, чтобы в какой-либо архитектуре проекта применялся объектно-ориентированный подход, если говорить академически. В лучшем случае я бы назвал всю разработку гибридом объектно-ориентированных концепций и процедурных концепций. Многие люди, с которыми я говорил, похоже, утверждают, что любое использование инкапсуляции - это ОО; пока не используется инкапсуляция процедурная. Это, конечно, смешно

При создании компонентов Flex вы будете писать много кода в методах LifeCycle компонента Flex (createChildren (), commitProperties (), measure () и updateDisplayList ()); но вы, вероятно, не будете создавать свою собственную объектно-ориентированную архитектуру.

Как красиво упаковать вызовы асинхронных методов?

Я не уверен, что вы подразумеваете под паком в этом контексте.

1 голос
/ 15 июня 2010

ModelLocator - это анти-шаблон; Я советую избегать Cairngorm и использовать более качественные фреймворки, такие как Spring Actionscript: http://www.springactionscript.org/

Я бы порекомендовал Shashank Tivari «Advanced Flex» от Friends of Ed для отличного обзора лучших практик Flex. (Очевидно, поскольку я новый пользователь, я не могу опубликовать ссылку, но вы можете легко найти ее в Google или найти на Amazon.)

1 голос
/ 12 июня 2010

Посмотрите на RobotLegs. Он включает в себя внедрение зависимостей очень гибко, легко настраивается и работает довольно быстро.

http://www.robotlegs.org/

Существует множество фреймворков для Flex. Это довольно тяжелая работа, чтобы выбрать один над другим. Пойдите с чем-то, что имеет много примеров и хорошую поддержку сообщества.

0 голосов
/ 10 июня 2010

Я очень, очень рекомендую использовать инфраструктуру Swiz во Flex (я никогда не использовал Air, но должен быть таким же). Недавно я получил удовольствие от моей новой работы по созданию приложения Flex, которое мой предшественник создавал с нуля и с нуля, используя любой подход, который мне понравился.

Я хотел использовать фреймворк во Flex, поэтому взглянул на Cairngorm и Mate, но Swiz выделялся своей простотой. Вы можете прочитать все это в блестящей новой вики , но Swiz придерживается подхода внедрения / инверсии зависимостей в различных других средах (это очень похоже на Spring, если вы знакомы с этим), но пытается сделайте это наиболее удобным способом. Просто добавьте некоторые метаданные в свой код, и вы сможете получить все преимущества практически без ссылок на библиотеку и с почти нулевыми строками стандартного кода (в отличие от Cairngorm).

Исходя из этого, рекомендуемый подход - это шаблон модели представления (см. Best Practices в вики) для отделения вашего представления от базовых данных (подход MVC), и он также очень хорошо работает. Swiz хорош, потому что он не навязывает вам какой-либо выбор дизайна, он просто предоставляет инструменты, которые позволяют вам проектировать так, как вы хотите. Вы можете «упаковать» свои асинхронные вызовы службы простым вызовом executeServiceCall (), передав AsyncToken, обработчик результатов и обработчик ошибок, И вы можете передать произвольный массив объектов для поддержки ссылок / состояния между запросом и результатом. Это действительно "жестоко просто".

Разработчики из списка рассылки тоже очень полезны и обычно отвечают в течение дня. Я не могу отблагодарить их достаточно:).

...