Design Pattern:
Memento pattern is used to restore state of an object to a previous state 备忘录模式是用来存储以前的状态的
模式: Memento存储记录状态,Originator用来存储状态,Caretaker用来加载Memento中的状态
Memento作为state的一个对象 (就像一张便利贴写上你要记下来的东西)
public class Memento {
private String state;
public Memento(String state){
this.state = state;
}
public String getState(){
return state;
}
}
复制代码
Originator发起人 (就像是在用便利贴的用户)
public class Originator {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Memento saveStateToMemento(){
return new Memento(state);
}
public void getStateFromMemento(Memento memento){
state = memento.getState();
}
}
复制代码
CareTaker管理类 (就像一个便利贴本本 存放了一大堆便利贴 取的时候报号码,存的时候往上面粘一张)
public class CareTaker {
private List<Memento> mementoList = new ArrayList<>();
public void add(Memento memento){
mementoList.add(memento);
}
public Memento get(int index){
return mementoList.get(index);
}
}
复制代码
MementoPatternDemo实验开始
public class MementoPatternDemo {
public static void main(String[] args) {
//写进备忘录Memento
//CareTaker 存储Memento
Originator originator = new Originator();
CareTaker careTaker = new CareTaker();
originator.setState("State #1");
originator.setState("State #2");
careTaker.add(originator.saveStateToMemento());
originator.setState("State #3");
careTaker.add(originator.saveStateToMemento());
originator.setState("State #4");
System.out.println("Current State:"+originator.getState());
originator.getStateFromMemento(careTaker.get(0));
System.out.println("第一次存放"+originator.getState());
originator.getStateFromMemento(careTaker.get(1));
System.out.println("第二次存放"+originator.getState());
}
}
复制代码