当一个对象就对应一个保存对象状态的对象 当对象很多时 不利于管理 开销也很大 也就是说 简单的做个备份 new出另外一个对象 需要时在把备份的数据放到新对象中 这就暴露了对象内部的细节 解决方案就是使用备忘录模式
基本介绍 备忘录模式在不破坏封装性的前提下 捕获一个对象的内部状态 并在该对象之外保存这个状态 这样以后就可将该对象恢复到原先保存的状态可以这样理解 现实生活中的备忘录就是用来记录某些要去做的事情 或者是记录已经达到的共同意见的事情 以防忘记了。而在软件层面 备忘录模式有着相同的含义 备忘录对象主要用来记录一个对象的某种状态 或者某些数据 当要做回退时 可以从备忘录对象中获取原来的数据进行恢复操作属于行为型设计模式 角色及职责originator 需要保存状态的对象
memento 备忘录对象 负责保存好记录 即originator内部状态
Caretaker 守护者对象 负责保存多个备忘录对象 使用集合管理提高效率
说明 如果希望保存多个originator对象的不同时间的状态 也可以 只需要使用HashMap String, 集合
代码示例一个游戏角色的状态保存和恢复
Memento
public class Memento {
private int vit;
private int def;
public Memento(int vit, int def) {
this.vit vit;
this.def def;
public int getVit() {
return vit;
public void setVit(int vit) {
this.vit vit;
public int getDef() {
return def;
public void setDef(int def) {
this.def def;
Caretaker
public class Caretaker {
* 如果只保存一次状态
private Memento memento;
* 保存多次状态
//private List Memento mementoList;
* 对多个角色保存多个状态
//private HashMap String ,List Memento rolesMements;


