У меня есть самопровозглашенный пример кода 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, чтобы получить советы и узнать о мобильной разработке и т. Д., Связанные темы. . ~ Эли ~