package com.cheng.zenofdesignpatterns.patterns.memento.clone;
/**
* clone方式的备忘录
*/
public class CloneOriginator implements Cloneable {
private CloneOriginator backup;
// 内部状态
private String state = "";
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
// 创建一个备忘录
public void createMemento() {
this.backup = this.clone();
}
// 恢复一个备忘录
public void restoreMemento() {
// 在进行恢复前应该进行断言,防止空指针
this.setState(this.backup.getState());
}
/**
* clone当前对象
*/
@Override
protected CloneOriginator clone() {
try {
return (CloneOriginator) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return null;
}
}