'M Работа над приложением Android с использованием архитектуры MVVM с принципами чистого кода. Приложение имеет три уровня:
ui -> domain -> data (Repository -> Источник данных)
из Слой данных, я хочу вернуть объект домена для поддержания разделения проблем. Однако я не уверен, где обрабатывать отображение между объектом передачи данных (DTO) и объектом домена - будь то в репозитории или источнике данных. < /P>
Вот и есть Пример отображения в репозитории: < /p>
class MyRepository(private val dataSource: MyDataSource) {
suspend fun fetchData(): Either {
return when (val result = dataSource.getMyData()) {
is Either.Left -> result
is Either.Right -> Either.Right(result.b.toDomain())
}
}
interface MyDataSource {
suspend fun getMyData(): Either}
class MyRemoteDataSourceImpl(private val apiService: ApiService) : MyDataSource {
override suspend fun getMyData(): Either {
return try {
val response = apiService.getData()
if (response.isSuccessful) {
response.body()?.let {
Either.Right(it)
} ?: Either.Left(Failure.UnknownError("Response body is null"))
} else {
Either.Left(Failure.ServerError)
}
} catch (e: IOException) {
Either.Left(Failure.NetworkError)
} catch (e: Exception) {
Either.Left(Failure.UnknownError(e.localizedMessage ?: "Unknown error"))
}
}}
< /code>
С таким подходом я чувствую, что репозиторий тесно связан с источником данных. Если источник данных изменится и возвращает другой DTO, репозиторий также необходимо изменить. Однако, с таким подходом, источник данных будет много, вызовите API и сопоставление с доменом (источник данных не знаю) < /p>
< /li>
[*] Третий вариант будет отображаться с репозиторием, а затем в карте репозитория в домен. При таком подходе мы могли бы сделать часть разделения, однако у нас должно быть два отображения. Mapper to Domain.
Пожалуйста, дайте мне знать, какой вариант вы считаете лучшим
Подробнее здесь: https://stackoverflow.com/questions/794 ... chitecture
Где карта для домена из уровня данных в чистой архитектуре MVVM? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1738860157
Anonymous
'M Работа над приложением Android с использованием архитектуры MVVM с принципами чистого кода. Приложение имеет три уровня:
[b] ui -> domain -> data (Repository -> Источник данных) [/b]
из Слой данных, я хочу вернуть объект домена для поддержания разделения проблем. Однако я не уверен, где обрабатывать отображение между объектом передачи данных (DTO) и объектом домена - будь то в репозитории или источнике данных. < /P>
Вот и есть Пример отображения в репозитории: < /p>
class MyRepository(private val dataSource: MyDataSource) {
suspend fun fetchData(): Either {
return when (val result = dataSource.getMyData()) {
is Either.Left -> result
is Either.Right -> Either.Right(result.b.toDomain())
}
}
interface MyDataSource {
suspend fun getMyData(): Either}
class MyRemoteDataSourceImpl(private val apiService: ApiService) : MyDataSource {
override suspend fun getMyData(): Either {
return try {
val response = apiService.getData()
if (response.isSuccessful) {
response.body()?.let {
Either.Right(it)
} ?: Either.Left(Failure.UnknownError("Response body is null"))
} else {
Either.Left(Failure.ServerError)
}
} catch (e: IOException) {
Either.Left(Failure.NetworkError)
} catch (e: Exception) {
Either.Left(Failure.UnknownError(e.localizedMessage ?: "Unknown error"))
}
}}
< /code>
С таким подходом я чувствую, что репозиторий тесно связан с источником данных. Если источник данных изменится и возвращает другой DTO, репозиторий также необходимо изменить. Однако, с таким подходом, источник данных будет много, вызовите API и сопоставление с доменом (источник данных не знаю) < /p>
< /li>
[*] Третий вариант будет отображаться с репозиторием, а затем в карте репозитория в домен. При таком подходе мы могли бы сделать часть разделения, однако у нас должно быть два отображения. Mapper to Domain.
Пожалуйста, дайте мне знать, какой вариант вы считаете лучшим
Подробнее здесь: [url]https://stackoverflow.com/questions/79417502/where-to-map-to-domain-from-data-layer-in-mvvm-clean-architecture[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия