动机:要求程序回溯到对象之前处于某个节点时的状态,如果使用一些公有接口来获取对象状态,这样会暴露细节实现
class Memento{
String state;
public Memento(Object o){
//反序列化,或者内存编码,或者内存流
}
public String get(){}
public void set(String state){}
}
class Originator{
String state;
Memento createMemento(){
Memento mo=new Memento(state);
return mo;
}
void setState(Memento mo){
mo.set(this.state);
}
}
class MainForm{
public static void main(String args[]){
Orginator or;
Memento mo=or.createMemento();
//改变对象操作..
Orginator.setState(mo);
//mo.get这时取出来的对象就是之前保存的对象
}
}
该模式已经消失在历史长河中,保存对象快照有很多种方式可以实现