Как делал маппинг данных между слоями архитектуры

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

Ответ

Для маппинга данных между слоями в Clean Architecture/MVVM обычно использую:

  1. Ручной маппинг – простой и прозрачный:
// Data layer model
data class UserDto(val id: Int, val name: String)

// Domain layer model
data class User(val userId: Int, val userName: String)

fun UserDto.toDomain() = User(
    userId = id,
    userName = name
)
  1. Библиотеки (если сложные преобразования):
  • MapStruct
  • kotlinx.serialization (для JSON ↔ DTO)

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

  • Избегай передачи DTO между слоями
  • Каждый слой имеет свои модели
  • Преобразования лучше выносить в отдельные mapper-классы/extension-функции

Для UI слоя часто используют ViewState/ViewEvent модели.