Для чего нужен Domain layer

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

Ответ

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

Ключевые задачи:

  • Содержит чистую бизнес-логику (например, валидацию, расчёты).
  • Независим от Android SDK, что упрощает тестирование.
  • Может включать Use Cases (Interactors) для инкапсуляции конкретных операций.

Пример Use Case:

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

Плюсы:

  • Чистая архитектура (легко поддерживать/тестировать).
  • Минимизация дублирования кода.
  • Гибкость при изменении UI или источников данных.