Насколько актуально работать с Interactor а не напрямую с репозиторием

«Насколько актуально работать с Interactor а не напрямую с репозиторием» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Использование Interactor (UseCase) предпочтительнее прямого доступа к репозиторию, так как:

  1. Разделение ответственности – бизнес-логика выносится из ViewModel/Presenter
  2. Тестируемость – легче тестировать изолированные UseCase
  3. Переиспользование – один 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 они обязательны.