Ответ
UseCase (Interactor) содержит бизнес-логику, а Repository предоставляет доступ к данным. UseCase использует Repository для получения/сохранения данных, но не знает деталей реализации (сеть, БД и т.д.). Это разделение по принципу Clean Architecture.
Пример:
class GetUserUseCase(private val userRepo: UserRepository) {
suspend operator fun invoke(userId: String): User {
return userRepo.getUser(userId) // запрос к репозиторию
}
}
interface UserRepository {
suspend fun getUser(id: String): User
}