Насколько большими должны быть объекты передачи данных? - PullRequest
1 голос
/ 03 августа 2010

Как я понимаю, объекты передачи данных используются для различных целей, поэтому давайте ограничим область действия с помощью уровня представления в веб-приложениях на основе Java (JSF) (т. Е. Обычно есть несколько объектов-объектов, отображаемых в БД, может также использоваться на уровне бизнес-логики, а некоторые объекты переноса используются на уровне представления).

Итак, у меня есть некоторое недопонимание о том, как должны выглядеть хорошо спроектированные DTO. Должен ли я держать их как можно меньше? Или я должен попытаться передать им как можно больше информации и спроектировать их так, чтобы за один раз инициализировалась только некоторая (различная в разных вариантах использования) часть полей DTO?

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

Ответы [ 3 ]

2 голосов
/ 03 августа 2010

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

1 голос
/ 03 августа 2010

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

Я говорю, что они должны быть отделены от бизнесаобъекты, в отличие от заявления Божо «если они вообще отличаются от объектов домена», поскольку DTO часто будут нуждаться в установщиках, которые пользователи бизнес-объекта не должны использовать.

У меня есть, например, объект Person иPersonDTO ... DTO нужен установщик для имени человека (имя, фамилия и т. д.), но оно извлекается из внешнего источника данных, и моему приложению не разрешено изменять его, поэтому мой бизнес-объект "Person" не должену меня нет сеттера.

1 голос
/ 03 августа 2010

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

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

...