Memento设计模式用来备份一个对象的当前状态,当需要的时候,用这个备份来恢复这个对象在某一个时刻的状态。
看一段代码:
package memento; import java.io.Serializable; class Originator { public int number; public Originator(int num){ this.number = num; } public void setNumber(int num){ this.number = num; } public int getNumber(){ return this.number; } // 创建一个Memento public Memento getMemento(){ return new Memento(this); } // 恢复到原始值 public void setMemento(Memento m){ number = m.number; } } class Memento implements Serializable{ private static final long serialVersionUID = 1L; public int number; public Memento( Originator o){ number = o.number; } } public class Test{ public static void main(String[] args) { Originator o = new Originator(10); System.out.println("original:"+o.getNumber()); Memento mement = o.getMemento(); o.setNumber(20); System.out.println("changed:"+o.getNumber()); o.setMemento(mement); System.out.println("recovered:"+o.getNumber()); } }
上面的代码中,Memento这个类备份了Originator这个类的状态number,在需要的时候用这个备份就可以恢复Originator被备份的那个状态。
下面是运行的结果:
original:10changed:20recovered:10