Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

Объекты

values - это просто объекты, равенство которых не основано на идентичности, напримерjava.lang.Integer

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top