(скрин 1)
Возникло желание вынести маппинг моделей между слоями в единую сущность - Mapper
Первый вопрос: стоит ли так делать или лучше оставить маппинг внутри самих моделей? (скрин 2)
Второй вопрос: где должен располагаться класс Mapper? (самому хочется положить его отдельно - куда-нибудь в base или utils)
https://github.com/android10/Android-CleanArchitecture/tree/master/presentation/src/main/java/com/fernandocejas/android10/sample/presentation
1. Если возникло желание, то стоит) 2. Можно по такому принципу: UserNetworkMapper - user.data.network, UserDatabaseMapper - user.data.database
Получается, когда у меня 4 модели: RecipeDto, RecipeEntity, Recipe (для domain) и RecipeUi То у меня получится и 3-4 маппера?
Ну смотря сколько и куда тебе нужно маппить, если каждую модель в каждую то много)
3 маппера, да. Я для ui-модели обычно не создаю маппер, как-то лень
> Возникло желание вынести маппинг моделей между слоями в единую сущность - Mapper борись с этим. То, как сейчас делаешь – хорошее решение
Модель data-слоя низкоуровневая и и так загружена всяким мусором - аннотациями для json, room и т.п. Можно добавить туда ещё ещё и мапперы. Однако с таким подходом может возникнуть проблема, если одну и ту же data-модель используют несколько фичей, причём разные данные из неё. Придётся делать несколько мапперов: to/fromDomainModel1(), to/fromDomainModel2(), ... Поэтому мапперы я обычно делаю в имплементации репозитория - просто приватные функции .
тоже подойдёт. Но заводить отдельный Mapper и пытаться его ещё сделать псевдо-универсальным – путь в никуда
камон, экстеншены не часть класса
Обсуждают сегодня