用于存储状态,及状态恢复,分别分为三个角色,原始类,存档类,存档管理类(作为容器,存储相应的存档点)
以上备忘录模式有些类似于回滚交易中的log日志记录,可以通过相应的数据进行回滚(状态恢复)。
原始类:
public class Originator { private String state; public Originator(String state) { super(); this.state = state; } /** * 保存记录 */ public void saveRecord() { CareTaker.add(new Memento(state)); } /** * 从记录恢复 * @param a */ public void restoreRecord(int a){ this.setState(CareTaker.get(a).getRecord()); } public void setState(String state) { this.state = state; } @Override public String toString() { return state; } }存档记录类:
public class Memento { private String record; public Memento(String record) { this.record = record; } public String getRecord(){ return record; } }存档记录工具类:
public class CareTaker { private static List<Memento> list = new ArrayList<>(); public static void add(Memento backup){ list.add(backup); } public static Memento get(int a){ return list.get(a); } }测试类:
public class Test { public static void main(String[] args) { Originator org = new Originator("123"); org.saveRecord(); org.setState("456789"); org.saveRecord(); // 恢复到第一条记录 org.restoreRecord(0); System.out.println(org.toString()); } }类图:
