Является ли объект передачи данных таким же, как объект значения? - PullRequest
10 голосов
/ 12 января 2012

Является ли объект передачи данных таким же, как объект значения, или они отличаются?Если они отличаются, то где мы должны использовать DTO и где мы должны использовать VO?

Язык программирования, о котором мы говорим, это Java, а контекст - есть веб-приложение, которое извлекает данные избазы данных, а затем обрабатывает ее, и в конечном итоге обработанная информация отображается на внешнем интерфейсе

Ответы [ 4 ]

9 голосов
/ 12 января 2012

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

2 голосов
/ 15 февраля 2012

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

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

Сравните значения объектов с вещами, которые имеют уникальную идентичность в вашей системе, которые называются сущностями.Если у вас есть система, в которой он отслеживает клиента, осуществляющего платеж, клиент и платеж являются субъектами, поскольку они представляют собой конкретные вещи, но денежная сумма в платеже является просто величиной, она сама по себе не существует,что касается вашей системы.То, как что-то связано с вашей системой, определяет, является ли это Объектом Значения или Сущностью.

2 голосов
/ 12 января 2012

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

значения объектов являются просто объектамичье равенство не основано на идентичности, например, java.lang.Integer

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

0 голосов
/ 08 августа 2018

Они разные, но я даже использовал их взаимозаменяемо в прошлом, что неправильно. Я читал, что DTO (объект передачи данных) назывался VO (объект значения) в первом издании книги Core J2EE Patterns, но не смог найти эту ссылку.

DTO, который я иногда называю Dumb Transfer Object, чтобы помочь мне вспомнить, что это контейнер и не должен иметь никакой бизнес-логики, используется для передачи данных между слоями и уровнями. Это просто должен быть объект с атрибутами, который имеет геттеры / сеттеры.

VO, однако, похож на Enum JAVA и представляет собой фиксированный набор данных. VO не имеет идентификатора объекта (адрес экземпляра объекта в памяти), оно идентифицируется по значению и является неизменным.

...