oop - DTO 模式与 Memento 模式

标签 oop design-patterns dto data-transfer-objects memento

DTO pattern 之间有什么区别(作者:福勒)和 Memento pattern (GoF)在动机和实现方面?可以是同一个类(class)吗?如果是,我该如何命名它们(xxxDTO 或 xxxMemento)?它们在实现上有什么主要区别吗?它们在 MVP 中的位置在哪里?架构?

谢谢。

最佳答案

它们有不同的目的。 DTO 是一种设计模式,用于在软件应用程序的层和/或多层之间传输对象。另一方面,备忘录是另一种设计模式,它允许对象通过外部化其状态来提供撤消功能,如果需要,可以在以后恢复该状态。类的 DTO 类和 Memento 类可能看起来相似,普通的旧 {Insert Technology Here} 对象 - PO?O 或看起来完全相同。然而,它们需要保持分离,因为它们将满足不同的需求,因此发展也不同。例如,有一天您可能需要在 DTO 类中包含一个属性,但同一属性对于对象的状态管理并不重要,因此不需要添加到 memento 类中。

另一个方面是,DTO 通常发生在您的类(class)之外,而您的类(class)对 DTO 毫无了解。事实上,有一些框架可以为您处理数据映射。另一方面,对于 memento 模式,您的类需要提供一个 api,就像您在 uml 图中看到的那样,例如 CreateMemento、RestoreFromMemento 等。

关于oop - DTO 模式与 Memento 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4036441/

相关文章:

oop - 使用 BDD 时遵循开放/封闭原则有什么好处吗?

java - 在 Java DTO 类上使用数据注释

c++ - 这里是否违反了封装的概念?

javascript - 无法在 Jasmine 中调用 Javascript 函数

java - 适配器类与数据类中的 toXXX() 方法

java - 如何有效地从该对象中包含的另一个对象访问对象字段/属性

ios - 以 objc 模式建模许多不同的类

c# - 使用 DTO 和 POCO 对象时处理导航属性的最佳做法是什么?

Java EE DAO/DTO(数据传输对象)设计模式

java - 访问 java 包外部的 BaseClass?