Ответ
Interactor и UseCase часто используются как синонимы в Clean Architecture, но могут иметь нюансы:
-
UseCase - абстрактное понятие бизнес-логики, независимое от реализации. Просто описывает "что нужно сделать".
-
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.