设计模式:20-备忘录
原创
©著作权归作者所有:来自51CTO博客作者wx62e0d796b5814的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、使用场景:有时候需要将对象状态保存到另一个对象种,在需要的时候进行恢复,比如打游戏时的存盘。
二、示例
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.运行结果:
