В чем разница между Interactor и UseCase

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

Ответ

Interactor и UseCase часто используются как синонимы в Clean Architecture, но могут иметь нюансы:

  1. UseCase - абстрактное понятие бизнес-логики, независимое от реализации. Просто описывает "что нужно сделать".

  2. Interactor - конкретная реализация UseCase, содержит исполняемую логику. Часто включает репозитории, преобразование данных.

Пример:

// UseCase (интерфейс)
interface GetUserUseCase {
    suspend fun execute(id: String): User
}

// Interactor (реализация)
class GetUserInteractor(
    private val userRepo: UserRepository
) : GetUserUseCase {
    override suspend fun execute(id: String): User {
        return userRepo.getUser(id)
    }
}

На практике разница минимальна - оба термина описывают бизнес-логику. Interactor чаще используют в VIPER, UseCase - в Clean Architecture.