备忘录模式就是把一个状态储存在一个类当中,需要用的时候,拿出来。例子如下:
主界面类(一共有四个类:主角类Originator记录主角基本信息,记忆类Memento,管理者类Caretaker,主函数类Main)
package MementoPattern;
public class Main {
public void printFrame(){
Originator o = new Originator();//创建主角
o.setState("On");//主角状态改变
o.show();//输出当前状态
Caretaker c = new Caretaker();//创建保存者
c.setMemento(o.createMemento());//保存主角的Memento,状态为On
o.setState("Off");//主角状态再次改变
o.show();//输出状态
o.setMemento(c.getMemento());//从保存者那里拿去记忆
o.show();//输出状态
}
public static void main(String[] args) {
Main main = new Main();
main.printFrame();
}
}
记忆类
package MementoPattern;
//备忘录类
public class Memento {
private String state;
public Memento(String state) {
// TODO Auto-generated constructor stub
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
主角类
package MementoPattern;
//发起人
public class Originator {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Memento createMemento(){
return (new Memento(state));
}
public void setMemento(Memento memento){
state = memento.getState();
}
public void show(){
System.out.println("State="+state);
}
}
管理者类
package MementoPattern;
//管理者类
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
记忆力与管理者类有点模糊