备忘录模式(Memento Pattern)式属于行为型模式。他用来保存一个对象的某个状态,以便在适当的时候恢复对象。
很简单的demo:
记录对象的状态
public class LastState {
private String state;
public LastState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
会有状态变化的类:
public class Originator {
private String state;
private LastState lastState;
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void saveStateToMemento() {
if (lastState == null){
lastState = new LastState(state);
}else {
lastState.setState(state);
}
}
public LastState getStateFromMemento() {
return lastState;
}
}
调用:
Originator originator = new Originator();
originator.setState("我要减肥!!!"); //设置状态
originator.saveStateToMemento(); // 记录我要减肥的想法
originator.setState("我饿了,我要去吃火锅。。");
System.out.println("最新的状态: " + originator.getState());
System.out.println("上一个状态: " + originator.getStateFromMemento().getState());
输出结果:
最新的状态: 我饿了,我要去吃火锅。。
上一个状态: 我要减肥!!!
优点:轻量级的保存状态
缺点:如果保存的状态比较多的话,耗内存