【发布时间】:2014-08-14 17:48:55
【问题描述】:
我目前正试图弄清楚 Memento Pattern 是如何工作的。我坚持使用Caretaker 类?拥有它真的很重要吗?我的意思是我可以在没有这个类的情况下使用 Memento。请在下面查看我的代码。
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();
}
}
这是 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
}
这段代码运行良好,Memento 运行良好。
【问题讨论】:
-
Caretaker类在哪里? -
我没有。其实我不明白我为什么需要它。
-
这样一个简单的例子可能看起来差别不大,但它会帮助你稍后将这个构造代码和模型代码分开。有一个很好的视频:youtube.com/watch?v=RlfLCWKxHJ0
-
想想单一职责原则和得墨忒耳定律,以及简化的测试和调试。
标签: java design-patterns memento