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:10
changed:20
recovered:10