Шаблон DTO против шаблона Memento - PullRequest
1 голос
/ 27 октября 2010

В чем различия между паттерном DTO (Фаулером) и паттерном сувенира (ГоФ) в аспекте мотивации и реализации?Это могут быть одни и те же занятия?Если да, как я могу назвать их (xxxDTO или xxxMemento)?Есть ли у них принципиальная разница в реализации?Где их место в архитектуре MVP ?

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 октября 2010

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

Еще один аспектчто DTO обычно происходит за пределами ваших классов, и ваши классы не имеют представления о DTO.На самом деле, существуют фреймворки, которые позаботятся о отображении данных для вас.С другой стороны, для шаблона сувенира ваши классы должны будут предоставить API, который вы видите на диаграммах uml, например CreateMemento, RestoreFromMemento и т. Д.

1 голос
/ 27 октября 2010

Эти два часто используются для совершенно разных вещей - где вы здесь запутались?DTO - это передача данных (классы носителей), в то время как сувенир - это отслеживание изменений и возможность откатить эти изменения.Кроме того, я не уверен, что вас смущает ваш вопрос.

...