一、使用场景:有时候需要将对象状态保存到另一个对象种,在需要的时候进行恢复,比如打游戏时的存盘。
二、示例
1.创建备忘录类,用于保存状态信息:

package cn.edu.tju.app;

public class Memento {
private int state;

public int getState() {
return state;
}

public void setState(int state) {
this.state = state;
}
}

2.创建原发器类,用来创建和恢复备忘录里的状态:

package cn.edu.tju.app;

public class Originator {
private int state;
private Memento memento;

public int getState() {
return state;
}

public void setState(int state) {
this.state = state;
}

public Memento createMemento(){
Memento memento=new Memento();
memento.setState(state);
this.memento=memento;
return memento;
}

public void setMemento(Memento m){
this.state=m.getState();
}

public void recoverMemento(){
this.state=memento.getState();
}
}

3.创建"负责人"类,来调用原发器类的方法进行备忘录的保存与恢复

package cn.edu.tju.app;

public class Caretaker {
public static void main(String[] args) {
Originator originator=new Originator();
originator.setState(1997);
//创建状态为1997的备忘录
originator.createMemento();

//设置新的状态
Memento m=new Memento();
m.setState(2022);
originator.setMemento(m);
System.out.println(originator.getState());

//根据备忘录的内容恢复状态
originator.recoverMemento();
System.out.println(originator.getState());




}
}

4.运行结果:

设计模式:20-备忘录_java