Правильное место для сопоставления домена в чистой архитектуре AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Правильное место для сопоставления домена в чистой архитектуре Android

Сообщение Anonymous »

Я и мой коллега спорим о том, где лучше всего сопоставлять наши объекты сущностей или удаленные объекты dto с простыми объектами домена.
Наша структура выглядит следующим образом. .
источник (включает dao) > репо (включает исходный код) > usecase (включает репо)
Мой коллега считает, что необходимо выполнить сопоставление с доменом внутри источника, чтобы объект предметной области можно было передать на следующие уровни

Код: Выделить всё

class SomeSourceImpl(private val dao: Dao) : SomeSource {
override fun get(): Observable {
return dao.getResponse().map { it.mapToDomain() }
}
}
Мои коллеги утверждают, что, по мнению дяди Боба, это связано с правилом зависимости.

Это правило гласит, что источник зависимости кода могут указывать только внутрь.
Ничто во внутреннем круге не может ничего знать о чем-то
во внешнем круге. В частности, имя чего-либо, объявленного во
внешнем круге, не должно упоминаться в коде во внутреннем круге.
Это включает в себя функции и классы. переменные или любой другой поименованный
программный объект.

Я совершенно не согласен с подходом сопоставления с доменом непосредственно внутри источника, потому что тогда репозитории становятся анемичными, и, следовательно, мы принимаем анти-шаблон бесполезности анемичных репозиториев, и все, что они делают, — это слепо распространяют все, что поступает из источника. (Теперь вы можете сказать, что исходники тоже анемичны, и мы могли бы просто удалить их и включить объект dao непосредственно в репозиторий, но в нашем случае об этом не может быть и речи).
Вместо этого я предполагают, что источники будут возвращать необработанный объект базы данных (или удаленный объект, если мы используем вызовы rest), поскольку для источника имеет смысл возвращать необработанные данные для последующей обработки. Задача репозитория - получить результат из источника, затем сопоставить его с доменом и, наконец, распространить этот объект домена для использования примерно в таких случаях.

Код: Выделить всё

class SomeRepoImpl(private val someSource: SomeSource) : SomeRepo {
override fun get(haId: String): Observable {
return otherAssetSource.get().map { it.mapToDomain() }
}
Я также нашел несколько примеров на github, где они сопоставляются с доменом внутри своих репозиториев, а не с исходными кодами.
Здесь
Здесь
Здесь
Вот и для iOS
Что бы было строго правило в принципах чистой архитектуры относительно места, где можно сопоставить сущность с объектом предметной области?

Подробнее здесь: https://stackoverflow.com/questions/703 ... chitecture
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»