Ответ
Использование Interactor (UseCase) предпочтительнее прямого доступа к репозиторию, так как:
- Разделение ответственности – бизнес-логика выносится из ViewModel/Presenter
- Тестируемость – легче тестировать изолированные UseCase
- Переиспользование – один UseCase можно использовать в разных местах
Пример:
class GetUserUseCase(private val repo: UserRepository) {
suspend operator fun invoke(id: String): User = repo.getUser(id)
}
// В ViewModel:
class UserViewModel(private val getUser: GetUserUseCase) : ViewModel() {
fun loadUser() { viewModelScope.launch {
_user.value = getUser("123")
}}
}
Актуальность зависит от сложности проекта – для простых приложений можно обойтись без Interactor, но в Clean Architecture они обязательны.