Использование инъекций зависимостей с Roboguice? - PullRequest
42 голосов
/ 06 июня 2011

Я работаю над проектом Android, и я хотел бы узнать какие-либо рекомендации о том, что такое хорошая архитектура для создания приложений для Android.

Я хочу использовать внедрение зависимостей с помощью Roboguice, и я читал о шаблоне MVVM или шаблоне MVC ( Примеры шаблонов проектирования MVVM для Android ).

Также я знаю, что у roboguice есть очень классная функция создания и обработки событий на основе контекста, которая может быть очень удобной для тестирования, когда код не связан.

Есть какие-нибудь рекомендации по рабочей схеме проектирования? тестируемая и масштабируемая архитектура, с которой вы работали или разрабатывали?

1 Ответ

18 голосов
/ 13 июня 2011

Платформа Android предоставляет общий набор шаблонов проектирования, и при ограниченных аппаратных ресурсах, которые вы получаете по сравнению с веб-приложениями, все еще часто лучше придерживаться их использования непосредственно в рабочем коде.Существуют и другие фреймворки, которые как бы «оборачивают» базовую платформу;на них стоит обратить внимание, если у вас есть конкретная цель (или, возможно, для создания прототипа / эксперимента), но для лучшего уровня поддержки вам лучше всего придерживаться стандартных компонентов.

Это отличный ресурс при работепо решениям для пользовательского интерфейса: http://www.androidpatterns.com/

Специально для DI: есть платформа Spring для Android , я с ней поиграл, и она выглядит довольно многообещающе.Вы уже упоминали Roboguice как другую альтернативу этому.Тем не менее, чтобы избежать повышения производительности и издержек библиотеки, я все же считаю, что самый простой подход - написать простой класс на основе отражений, который регистрирует и внедряет зависимости в моем собственном коде.Подобно этому подходу , за исключением того, что я обычно перемещаю код внедрения в отдельный синглтон и ссылаюсь на него оттуда.

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

...