Sobes.tech
Назад к вопросам
Junior — Middle
104

На каком уровне ты знаком с принципами и использованием Dagger 2 в Android-разработке?

Компании, где спрашивали
ЯндексЯндекс

Ответ от нейросети

sobes.tech AI

Dagger 2 — это библиотека для внедрения зависимостей (Dependency Injection) в Android-приложениях, которая позволяет управлять созданием и предоставлением объектов, улучшая модульность и тестируемость кода.

На уровне junior/middle я знаком с основными принципами Dagger 2:

  • Использование аннотаций @Module для определения поставщиков зависимостей.
  • Аннотация @Provides внутри модулей для описания методов, создающих объекты.
  • Аннотация @Component для связывания модулей и точек внедрения.
  • Внедрение зависимостей через конструкторы или поля с помощью @Inject.

Пример простого модуля и компонента:

@Module
class NetworkModule {
    @Provides
    fun provideHttpClient(): OkHttpClient {
        return OkHttpClient.Builder().build()
    }
}

@Component(modules = [NetworkModule::class])
interface AppComponent {
    fun inject(activity: MainActivity)
}

class MainActivity : AppCompatActivity() {
    @Inject lateinit var client: OkHttpClient

    override fun onCreate(savedInstanceState: Bundle?) {
        DaggerAppComponent.create().inject(this)
        super.onCreate(savedInstanceState)
        // теперь client готов к использованию
    }
}

Таким образом, Dagger 2 помогает автоматически создавать и предоставлять зависимости, что уменьшает связность компонентов и облегчает поддержку кода.