Ответ
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()
}
}