Разница между объектами переноса и объектами домена - PullRequest
31 голосов
/ 18 июля 2011

Не могли бы вы объяснить разницу между объектами Transfer и объектами Domain в простых терминах?И если бы вы могли привести пример с Java, это было бы здорово ..

Ответы [ 4 ]

45 голосов
/ 18 июля 2011
  • У DTO нет логики. У них есть только поля (состояние). Они используются при передаче данных из одного слоя / подсистемы в другой
  • Объекты домена могут иметь логику (в зависимости от того, используете ли вы управляемый доменом дизайн или анемичную модель данных), и они обычно связаны со структурой базы данных.

Если используется анемичная модель данных (т.е. ваши доменные объекты не имеют никакой логики), DTO и объект домена могут быть одним и тем же объектом.

Похожие: http://techblog.bozho.net/?p=427

16 голосов
/ 18 июля 2011

Объект передачи данных (DTO) используется для обмена данными между различными частями приложения (например, разными уровнями) или разными приложениями.

  • DTO - это просто "тупая" структура данных.
  • Они используются в определениях контрактов / интерфейсов - это означает, что любой компонент, который использует один из этих интерфейсов, "знает" об этихобъекты.

Объекты домена (DO) (и классы, из которых они получены) реализуют бизнес-логику, поэтому они расположены только на уровне бизнес-логики / домене (основное значение одно и то же, даже если термины разные).

Поскольку DO реализует бизнес-логику, они могут быть сложными и могут включать методы, события и т. д.

Oneдополнительная точка зрения о DTO

Согласно школе мысли Мартина Фаулера DTO - это комбинация нескольких объектов (каждый из которых будет тем, что большинство людей обычно называют DTO);обоснование заключается в том, что в ситуациях дешевле отправлять большие пакеты данных реже (в отличие от «болтливости» и постоянной отправки множества небольших пакетов по сети).

Так что, где большинство людей будут просматривать DTOВ качестве отдельного объекта Мартин Ф. говорит, что DTO - это просто «оболочка», которая содержит несколько дискретных (и, возможно, не связанных) объектов.IMO не является большой проблемой - большинство людей считают, что DTO соответствует моему определению в верхней части этого ответа (или что-то близкое к нему).

3 голосов
/ 18 июля 2011

Объекты передачи часто сериализуются из-за характера их использования, это особенно уместно, если вызовы являются удаленными и между JVM, или они будут использоваться способом, способствующим сериализации, таким как сеансовые компоненты с состоянием.Для этого объекты переноса должны быть подвержены такой «обработке», т.е. объекты переноса реализуются сериализуемо.

Обратного нельзя сказать об объектах домена.Доменные объекты могут содержать поведение, однако DTO являются просто транспортной средой.

0 голосов
/ 14 ноября 2014

Объект домена в бизнес-перспективе, он является субъектом или субъектом деятельности со всем доменом и потоками, DTO - это объект данных, который отличается от объекта данных, который точно отражает объекты базы данных (особенно в архитектуре ORM) DTO может иметь агрегацию, преобразование, комбинирование данных для удовлетворения потребностей в представлении или некоторых данных, он не является субъектом, но объект Domain имеет субъектную базу на уровне своего определения домена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...