在 GOF Book 中,它说 Memento 设计模式的结构是这样的:
但是当我搜索 Wikipedia 时,它说 Memento 设计模式的结构是这样的:
两者中哪一个是正确的实现?
在 GOF Book 中,它说 Memento 设计模式的结构是这样的:
但是当我搜索 Wikipedia 时,它说 Memento 设计模式的结构是这样的:
两者中哪一个是正确的实现?
这两个图都解释了相同的概念,但方式不同。Momento 模式的关键概念是 Momento 模式用于保存对象的状态并在之后恢复状态。它基本上由四个类组成:
1. Originator 类:发起者类在 Memento 的对象中创建和存储状态 2. Momento 类: Momento 类从 Momento 恢复对象状态 3. CareTaker 类:看守者类保存 Momento 对象的列表 4. MomentoDemo 类:它使用 Originator 和 Caretaker 类,并使用其对象来显示对象状态的恢复。
所有这些图都显示了相同时刻模式实现的不同方面。
两个类图都不完整:
GOF 图缺少看守者和发起者之间的关联。大多数类图都遗漏了很多关联,但这个很重要,应该真正存在。
维基百科的图表忽略了看守人坚持这一时刻的事实。这也是应该在图表中真正出现的模式的重要部分。
GOF 还正确地指出 Originator -> Momento 箭头是一个依赖项,而不仅仅是一个关联,因为 Originator 类需要 Momento 类的功能来实现其接口。
序列图在解释其工作原理时最有用。