dependency injection в android, Давид Майборода
DESCRIPTION
DI — популярный паттерн, кочующий между разными платформами. Android не исключение: появляется всё больше фреймворков для построения Android-приложений с использованием инъекций.TRANSCRIPT
Dependency Injection in Android
Обо мне
Пишу код, больше ничего не умею…
3
Идея
- Переиспользование компонентов
4
Идея
- Переиспользование компонентов
- Лёгкость в тестировании
5
Идея
- Переиспользование компонентов
- Лёгкость в тестировании
- Стандартизированый код
6
ВНИМАНИЕ
7
Проблемы
Проблемы
- Память
9
Проблемы
- Память
- Скорость
10
Проблемы
- Память
- Скорость
!
- Порог вхождения
11
Dagger
Dagger
(Directed Acyclic Graph) + ger
13
Dagger
(Directed Acyclic Graph) + ger
- поддержка Андроид
!
14
Dagger
(Directed Acyclic Graph) + ger
- поддержка Андроид
- создание графа на этапе компиляции
!
15
Dagger
(Directed Acyclic Graph) + ger
- поддержка Андроид
- создание графа на этапе компиляции
- определение циклических зависимостей
!
16
Dagger(Directed Acyclic Graph) + ger
- поддержка Андроид
- создание графа на этапе компиляции
- определение циклических зависимостей
- отсутствие неполных модулей
!
!
17
Dagger(Directed Acyclic Graph) + ger
- поддержка Андроид
- создание графа на этапе компиляции
- определение циклических зависимостей
- отсутствие неполных модулей
- стандарт JSR-330
!
18
Dagger vs Roboguice
- Cтатический анализ зависимостей
19
Dagger vs Roboguice
- Cтатический анализ зависимостей
- Ошибки во время компиляции
20
Dagger vs Roboguice
- Cтатический анализ зависимостей
- Ошибки во время компиляции
- Не использует reflection
21
Dagger vs Roboguice
- Cтатический анализ зависимостей
- Ошибки во время компиляции
- Не использует reflection
- Выигрывает по памяти
22
В код…
В код…
24
Dagger (компоненты)
ObjectGraph - менеджер зависимотей и инжектор
25
В код…
26
Dagger (компоненты)
ObjectGraph - менеджер зависимотей и инжектор
@Module + @Provides - механизм предоставления зависимостей
27
В код…
28
Dagger (компоненты)
ObjectGraph - менеджер зависимотей и инжектор
@Module + @Provides - механизм предоставления зависимостей
@Inject - механизм для запроса зависимостей
29
Вопросы ?