Для чего нужен Domain слой в Clean Architecture

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

Ответ

Domain слой содержит бизнес-логику приложения и не зависит от фреймворков или внешних библиотек. Он включает:

  1. Entities – основные бизнес-объекты (например, User, Order)
  2. Use Cases (Interactors) – содержат конкретные бизнес-правила
  3. Repositories Interfaces – абстракции для доступа к данным

Пример Use Case:

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

Преимущества:

  • Изолирует бизнес-логику от деталей реализации
  • Упрощает тестирование
  • Делает код более читаемым и поддерживаемым