У меня есть самопровозглашенный пример кода World Shortest Dagger 2 ниже 😅. В нем менее 20 строк кода.
Ради удовольствия, я снова бью свой собственный рекорд. На этот раз у нас есть только 3 строки кода (небольшая хитрость, так как я заключил область видимости скобок в одну строку 😅). И это рабочий пример !!
class Info @Inject constructor() @Component interface MagicBox { val info: Info } fun main() { println(DaggerMagicBox.create().info) }
Пояснение ниже.
Первая строка
class Info2 @Inject constructor()
Это простой объект класса для внедрения. Нам просто нужно иметь там @Inject constructor()
, чтобы Dagger 2 распознал его как автоконструируемый.
Вторая линия
@Component interface MagicBox { val info: Info2 }
Этот компонентный блок похож на контейнер для всех зависимых объектов, которые будут здесь конструктором.
Dagger 2 автоматически сгенерирует реализацию MagicBox
, как показано ниже. (Примечание: Dagger 2 - это платформа DI на основе Java, поэтому создается код Java)
public final class DaggerMagicBox implements MagicBox { private DaggerMagicBox(Builder builder) {} public static Builder builder() { return new Builder(); } public static MagicBox create() { return new Builder().build(); } @Override public Info2 getInfo() { return new Info2(); } public static final class Builder { private Builder() {} public MagicBox build() { return new DaggerMagicBox(this); } } }
Третья линия
fun main() { println(DaggerMagicBox.create().info) }
Эта строка просто демонстрирует, как работает пример кода Dagger 2. fun main()
сам делает код исполняемым.
Глядя на автоматически сгенерированный код в Второй строке выше, использование DaggerMagicBox
автоматически становится очевидным.
Разве Dagger 2 не очень прост? Если вы хотите узнать больше, ознакомьтесь с приведенным ниже.
Или, если вам нравится серия занятий по Dagger 2
Вы можете ознакомиться с другими моими темами здесь.
Подпишитесь на меня в medium, Twitter, Facebook или Reddit, чтобы получить советы и узнать о мобильной разработке и т. Д., Связанные темы. . ~ Эли ~