DTO 模式(由 Fowler 提出)和Memento 模式(由 GoF 提出)在动机和实现方面有什么区别?可以是同一个班吗?如果是,我该如何命名它们(xxxDTO 或 xxxMemento)?它们在实施上有什么主要区别吗?他们在MVP架构中的位置在哪里?
谢谢。
DTO 模式(由 Fowler 提出)和Memento 模式(由 GoF 提出)在动机和实现方面有什么区别?可以是同一个班吗?如果是,我该如何命名它们(xxxDTO 或 xxxMemento)?它们在实施上有什么主要区别吗?他们在MVP架构中的位置在哪里?
谢谢。
它们服务于不同的目的。DTO 是一种设计模式,用于在软件应用程序的层和/或层之间传输对象。另一方面,Memento 是另一种设计模式,它允许对象通过外部化其状态来提供撤消功能,如果需要,以后可以恢复该状态。一个 DTO 类和一个类的 Memento 类可能看起来相似,普通的旧 {Insert Technology Here} 对象 - PO?O 或看起来完全相同。但是,它们需要分开,因为它们将服务于不同的需求,因此发展方式也不同。例如,您可能有一天需要在 DTO 类中包含一个属性,但该属性对于对象的状态管理并不重要,因此不需要添加到 memento 类中。
另一个方面是 DTO 通常发生在您的课程之外,您的课程不知道他们应该如何了解 DTO。事实上,有一些框架可以为您处理数据映射。另一方面,对于 memento 模式,您的类将需要提供一个 api,就像您在 uml 图中看到的那样,例如 CreateMemento、RestoreFromMemento 等。
两者通常用于非常不同的事情 - 你在这里混淆了什么?DTO 是关于数据传输(运营商类),而 memento 是关于跟踪更改并允许您回滚这些更改。我不确定,除此之外,你的问题让你感到困惑的是什么。