Ответ
Assisted Factory — это механизм в Dagger для создания объектов, которым требуются как зависимости из графа, так и runtime-параметры.
Пример:
class UserRepository @AssistedInject constructor(
private val api: ApiService,
@Assisted private val userId: String
) {
@AssistedFactory
interface Factory {
fun create(userId: String): UserRepository
}
}
Как работает:
@Assistedотмечает параметры, передаваемые в runtime.@AssistedFactoryгенерирует фабрику, объединяя зависимости из графа и внешние параметры.- Dagger автоматически реализует фабрику, которую можно внедрить.
Использование:
@Inject lateinit var factory: UserRepository.Factory
val repo = factory.create("123")
Плюсы:
- Избавляет от ручного создания фабрик.
- Сохраняет преимущества Dagger (проверка зависимостей на этапе компиляции).
Альтернатива устаревшему @AssistedInject из dagger.android.