Где выполняется маппинг данных в Clean Architecture

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

Ответ

В Clean Architecture маппинг данных обычно выполняется в слое Data (репозитории) или Domain (use case), в зависимости от сложности преобразований.

Рекомендуемый подход:

  • Простые преобразования (DTO → Entity) - в репозитории
  • Сложная бизнес-логика - в use case
// В репозитории
class UserRepositoryImpl {
    fun getUser(): User {
        val userDto = api.getUser() // DTO из сети
        return userDto.toDomain() // маппинг в Domain-модель
    }
}

// Расширение для маппинга
fun UserDto.toDomain() = User(
    id = this.id,
    name = "${this.firstName} ${this.lastName}"
)

Почему так:

  • Data слой знает о DTO и инфраструктуре
  • Domain слой остается чистым от деталей реализации
  • Use case может комбинировать данные из разных источников