24 Memento(行为型)
-
- 动机:(游戏存档)
- 在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。
- 有时需要记录对象的内部状态。
- 当实现检查点和撤销机制时,这是必需的,这些机制允许用户退出临时操作或从错误中恢复。您必须将状态信息保存在某个地方,以便可以将对象恢复到以前的状态。例如,撤销、重做、历史记录、快照。
- 但是对象通常封装了它们的部分或全部状态,使得其他对象无法访问它们,并且不可能从外部保存它们。
- 暴露这种状态会违反封装,这会损害应用程序的可靠性和可扩展性
- 什么时候用:
- 必须保存对象状态的快照,以便稍后将其恢复到该状态,而获取该状态的直接接口将公开实现细节并破坏对象的封装。
- 结构:
- 动机:(游戏存档)
-
- 协作:
- 好处:
- 保证封装性
- 化简Originator
- 缺点:
- 代价昂贵
- Hidden costs in caring for mementos.
- 例:
- 协作:
-
- 类图:
- 类图: