Ответ
Для маппинга данных между слоями в Clean Architecture/MVVM обычно использую:
- Ручной маппинг – простой и прозрачный:
// 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
)
- Библиотеки (если сложные преобразования):
- MapStruct
- kotlinx.serialization (для JSON ↔ DTO)
Ключевые моменты:
- Избегай передачи DTO между слоями
- Каждый слой имеет свои модели
- Преобразования лучше выносить в отдельные mapper-классы/extension-функции
Для UI слоя часто используют ViewState/ViewEvent модели.