首页/开发/代码质量与评审速查/备忘录模式 Memento(行为型)
设计原则与模式62 条

备忘录模式 Memento(行为型)

在不破坏封装的前提下捕获并恢复对象内部状态:撤销、快照、回滚场景;快照应不可变且控制体积,频繁快照要评估内存与序列化成本。

角色Originator(原发器)/ Memento(快照)/ Caretaker(保管)
要点快照不可变、封装不回传内部引用
变体增量快照、命令+快照组合撤销

Java 示例

Java 示例
class Editor {
    Memento save() { return new Memento(text, cursor); }
    void restore(Memento m) { this.text = m.text(); this.cursor = m.cursor(); }
}

易错点

  • 快照持有对象引用而非值拷贝:恢复后仍被后续修改污染
  • 无限快照历史:内存增长失控,需设上限与淘汰

数据来源与参考

  • 《设计模式》(GoF)· Memento
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌