bar*_*ara 6 java design-patterns memento
我目前正在试图弄清楚Memento Pattern的工作原理.我坚持Caretaker上课?拥有它真的很重要吗?我的意思是我可以在没有这门课的情况下使用纪念品.请参阅下面的代码.
public class Originator {
private String state;
private Integer code;
private Map<String, String> parameters;
// Getters, setters and toString were omitted
public Memento save() {
return new Memento(this);
}
public void restore(Memento memento) {
this.state = memento.getState();
this.code = memento.getCode();
this.parameters = memento.getParameters();
}
}
Run Code Online (Sandbox Code Playgroud)
这是Memento实施.
public class Memento {
private String state;
private Integer code;
private Map<String, String> parameters;
public Memento(Originator originator) {
Cloner cloner = new Cloner();
this.state = cloner.deepClone(originator.getState());
this.code = cloner.deepClone(originator.getCode());
this.parameters = cloner.deepClone(originator.getParameters());
}
// Getters and setters were omitted
}
Run Code Online (Sandbox Code Playgroud)
这段代码很好,Memento的工作完美无缺.