Или още познати като „Value Objects“ са обекти, които имат предназначение само и единствено да носят информация и нямат никаква функционалност.
Можем да си ги представяме като „само данновата част на един обект“.
To me the best answer to the question what is a DTO is that DTO’s are simple objects that should not contain any business logic or methods implementation that would require testing.
Какво би било едно практическо приложение на DTO? С какво тази концепция би ни помогнала?
Нека например имаме даден бизнес модел, който извлича данни от БД, обработва ги и т.н…. и връща на клиента някакъв, например JSON обект с дадена структура, която предварително е уговорена с клиента и той я очаква да е точно такава, и не трябва да я променяме.
Ако самият бизнес модел формира JSON отговор например, тогава всяка промяна в него (бизнес модела), би могла да промени и формата на отговора.
Т.е. имаме „tight coupling“ между бизнес модел и формат на отговора.
Ако обаче бизнес моделът подава готовата за връщане информация на DTO обект, самото и форматиране (на информацията за отговор) би ставало там и тогава прекъсваме „чупливата“ връзка между бизнес модел и формат на отговора. Можем вече по-лесно да променяме едното, бидейки сигурни, че няма да счупим форматът на връщания отговор.