Что размещается в UseCase в Clean Architecture

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

Ответ

UseCase содержит бизнес-логику приложения. Он инкапсулирует конкретное действие (например, получение данных, их обработку или выполнение операции).

Ключевые моменты:

  • Один UseCase = одна ответственность
  • Работает с domain-сущностями (не с DTO/моделями из API/DB)
  • Не зависит от фреймворков (Android SDK, Retrofit и т.д.)
  • Может использовать несколько репозиториев

Пример:

class GetUserProfileUseCase(
    private val userRepository: UserRepository
) {
    suspend operator fun invoke(userId: String): User {
        return userRepository.getUser(userId)
            ?: throw UserNotFoundException()
    }
}