Они служат разным целям.DTO - это шаблон проектирования, используемый для передачи объектов между слоями и / или уровнями программного приложения.С другой стороны, Memento - это еще один шаблон проектирования, который позволяет объекту предоставлять возможность отмены путем экстернализации своего состояния, которое впоследствии может быть восстановлено в случае необходимости.Класс DTO и класс Memento для класса могут выглядеть одинаково, просто старый объект {Insert Technology Here} - PO? O или выглядеть точно так же.Однако их необходимо хранить отдельно, потому что они будут обслуживать разные потребности и, следовательно, развиваться по-разному.Например, однажды вам может понадобиться включить свойство в ваш класс DTO, но это же свойство не важно для управления состоянием объекта и, следовательно, его не нужно добавлять в класс memento.
Еще один аспектчто DTO обычно происходит за пределами ваших классов, и ваши классы не имеют представления о DTO.На самом деле, существуют фреймворки, которые позаботятся о отображении данных для вас.С другой стороны, для шаблона сувенира ваши классы должны будут предоставить API, который вы видите на диаграммах uml, например CreateMemento, RestoreFromMemento и т. Д.