Ответ 1
Например, какие приложения больше всего выиграют от использования DI?
Включение зависимостей (как шаблон, а не библиотека) приносит пользу почти всему коду.
- Он способствует разработке модульных компонентов, которые предоставляют только необходимые API, необходимые для выполнения определенного действия. Когда вы вынуждены разбить кусочки ваших приложений, вам нужно подумать о том, сколько деталей реализации нужно раскрывать, как ведет себя API, и о видимости классов и методов.
- Он способствует логическим абстракциям компонентов (думаю: интерфейсы и их реализации). Вы, конечно, не должны это делать, но в конечном итоге это происходит органично, тем больше вы делаете вещи.
- Это облегчает тестируемость, создавая единую точку потребления типа, через которую класс получает то, что ему нужно. Необходимо заменить
Foo
наTestFoo
? Нет проблем.
Есть ли больше преимуществ производительности?
Нет. Библиотеки инъекций зависимостей существуют исключительно для уменьшения шаблона вокруг шаблона и увеличения декларативной способности запрашивать зависимости.
Является ли это более простотой расширения приложения?
Совершенно верно. Хотя я бы никогда не рекомендовал использовать Guice (или RoboGuice) в приложении для Android, вводный разговор с Guice из Google I/O - это фантастическое представление о том, почему инъекция зависимости важна в этой связи.
Еще больше о том, чтобы сделать его пригодным для тестирования?
Да и нет. Это счастливый побочный эффект правильной абстракции и модуляции. Тестирование - отличная вещь, так что тот факт, что инъекция зависимости предлагает легкость в этом, также хороша.
Я недавно рассказал о кинжале в контексте Android, который вы можете смотреть или просматривать слайды. Разговор начинается с инъекции зависимостей в виде рисунка, а затем переходит к тому, как кинжал уменьшает шаблон и позволяет использовать некоторые довольно интересные функции.
Я также сделал довольно продвинутое примерное приложение, которое использует Кинжал для сложных инъекционных прецедентов, которые также могут стоить проверить.
* В настоящее время разговор не является бесплатным, но станет таким в какой-то момент в следующие 10 месяцев.