Уместно ли когда-нибудь помещать функциональность в DTO? - PullRequest
0 голосов
/ 28 января 2010

Уместно ли когда-либо помещать в DTO функциональность, отличную от базовых установщиков и получателей?

Ответы [ 2 ]

2 голосов
/ 28 января 2010

Что ж, в ряде сценариев вам может понадобиться некоторый код сериализации (для любых интерфейсов сериализации, которые требует ваш API сериализатора - такие вещи, как IXmlSerializable / ISerializable в .NET), но я думаю, это не то, что вы значит ...

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

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

0 голосов
/ 28 января 2010

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

...