Использование инъекции зависимостей с помощью Roboguice?

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

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

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

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

Ответ 1

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

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

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

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