2014-02-03 3 views
16

Каковы конкретные преимущества или преимущества использования рамки внедрения зависимостей для Android, например Dagger, Transfuse или RoboGuice?Каковы конкретные преимущества использования DI на Android?

Например, какие приложения могут извлечь наибольшую пользу из использования DI? есть ли больше преимуществ производительности, или это больше связано с простотой распространения приложения или даже более того, чтобы сделать его пригодным для тестирования?

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

Спасибо!

+1

Зубочистка также является хорошей альтернативой: https://github.com/stephanenicolas/toothpick – Snicolas

ответ

28

Например, какие приложения могут извлечь наибольшую пользу из использования DI?

Инъекционная инъекция (как образец не библиотеки) приносит пользу почти всему коду.

  • Он способствует разработке модульных компонентов, которые выставляют только необходимые API-интерфейсы, необходимые для выполнения определенного действия. Когда вы вынуждены разбить кусочки своих приложений, вам нужно подумать о том, сколько деталей реализации нужно раскрывать, как ведет себя API, и о видимости классов и методов.
  • Он способствует логическим абстракциям компонентов (думаю: интерфейсы и их реализации). Вы, конечно, не должны этого делать, но в конечном итоге это происходит органично, тем больше вы делаете вещи.
  • Это облегчает тестируемость, создавая одноточечное потребление типа, через которое класс получает то, что ему нужно. Нужно поменять Foo на TestFoo? Нет проблем.

Есть ли преимущество в производительности?

№. Библиотеки инъекций зависимостей существуют исключительно для уменьшения шаблона вокруг шаблона и увеличения декларативной способности запрашивать зависимости.

Является ли это более простотой расширения приложения?

Абсолютно. Хотя я бы никогда не рекомендовал использовать Guice (или RoboGuice) в приложении для Android, the introductory talk to Guice from Google I/O - это фантастическое представление о том, почему инъекция зависимостей важна в этом отношении.

Подробнее о том, как сделать его пригодным для тестирования?

Да и нет. Это счастливый побочный эффект правильной абстракции и модуляции. Тестирование - отличная вещь, так что тот факт, что инъекция зависимости предлагает легкость в этом, также отличная.

Я недавно рассказал о кинжале в контексте Android, который вы can watch * или view the slides.Разговор начинается с инъекции зависимостей в виде рисунка, а затем переходит к тому, как Кинжал уменьшает шаблон и дает некоторые довольно интересные функции.

Я также сделал a fairly advanced sample application, который использует Кинжал для сложных инъекционных прецедентов, которые также могут стоить проверить.

* В настоящее время разговоры не являются бесплатными, но станут такими в некоторый момент в течение следующих 10 месяцев.

+0

Поэтому в основном я мог бы теоретически изменить плитки на вопрос и падение Android часть и это все равно будет действительным, верно? Я имею в виду, что, за исключением конкретной ссылки Dagger/Guice, все применяется в основном так же, как для мобильных платформ, так и для других. Точно, что я искал, спасибо !. Я смотрел видео и слайды, поэтому очень приятно видеть, что вы отвечаете на мой вопрос :) – Acapulco

+0

@ Джейк Уортон: можете ли вы объяснить, почему вы предпочитаете кинжал над роботиком? и если вы говорите о кинжале, yuo означает кинжал1 oder 2? – drdrej

Смежные вопросы