一、UML类图
二、代码示例
public class Client {
public static void main(String[] args) {
Caretaker caretaker = new Caretaker();
Originator originator = new Originator();
caretaker.setMemento(originator.createMemento());
originator.restoreMemento(caretaker.getMemento());
}
}
public class Originator {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Memento createMemento() {
return new Memento(state);
}
public void restoreMemento(Memento memento) {
this.state = memento.getState();
}
}
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
三、角色介绍
- Client(客户端):
客户端角色,程序的调用者。 - Originator(生成者):
该角色会保存自己的最新状态时生成Memento角色,当把以前保存的Memento角色传递给该角色时,该角色会将自己恢复至生成Memento角色时的状态。 - Memento(纪念品):
该角色会将Originator角色的内部信息整合在一起,但不会向外部公开这些信息。 - Caretaker(负责人):
该角色想要保存当前的Originator角色的状态时,会通知Originator角色生成Memento角色的实例,并保存获取到的Memento实例。