JAVA设计模式之备忘录模式
2016-12-18 23:37
405 查看
JAVA设计模式之备忘录模式
概念:
备忘录模式(memento),保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。结构
原发器类Originator:保存对象内部状态备忘录类Memento:存储状态的拷贝
负责人类CareTake:存储备忘录
应用
棋类开发中的悔棋普通软件的撤销
数据库软件中,事务管理的回滚操作
类图
代码
代码类图:// 源发器类 public class Emp { private String name; private int age; // 进行备忘操作,返回备忘录对象 public EmpMemento memento() { return new EmpMemento(this); } // 进行数据恢复,恢复成指定备忘录的值 public void recovery(EmpMemento mmt) { this.name = mmt.getName(); this.age = mmt.getAge(); } public Emp(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
// 备忘录类 public class EmpMemento { private String name; private int age; public EmpMemento(Emp emp) { this.name = emp.getName(); this.age = emp.getAge(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
// 负责人类, 负责管理备忘录 public class CareTake { private List empMementoList = new ArrayList<>();//用stack更好,还可以序列化和持久化,存到磁盘,以防丢失 public void addMemento(EmpMemento empMemento) { empMementoList.add(empMemento); } // 按顺序逐个恢复 public EmpMemento getLastMemento() { if (empMementoList.size() <= 0) { return null; } int index = empMementoList.size() - 1; EmpMemento result = empMementoList.get(index); empMementoList.remove(index); return result; } }
public class Main { public static void main(String[] args) { CareTake taker = new CareTake(); Emp emp = new Emp("55", 15); taker.addMemento(emp.memento()); System.out.println(JSON.toJSONString(emp)); emp.setAge(16); taker.addMemento(emp.memento()); System.out.println(JSON.toJSONString(emp)); emp.setAge(17); System.out.println(JSON.toJSONString(emp)); emp.recovery(taker.getLastMemento()); System.out.println(JSON.toJSONString(emp)); emp.recovery(taker.getLastMemento()); System.out.println(JSON.toJSONString(emp)); } }
相关文章推荐
- 深入浅出Java设计模式之备忘录模式
- java设计模式---备忘录模式
- JAVA 设计模式 备忘录模式
- Java设计模式之备忘录模式
- Java设计模式之备忘录模式
- Java设计模式-----Memento备忘录模式
- java设计模式_备忘录模式
- Java设计模式之从[暗黑破坏神存档点]分析备忘录(Memento)模式
- Java设计模式菜鸟系列(十九)备忘录模式建模与实现
- JAVA设计模式之备忘录模式
- java设计模式之备忘录模式
- java设计模式(行为型)之备忘录模式
- java设计模式---备忘录模式
- java设计模式-备忘录模式
- Java设计模式-----Memento备忘录模式
- java设计模式---备忘录模式
- JAVA设计模式-备忘录模式-Memento-游戏备份存档
- Java设计模式:备忘录模式
- Java设计模式之备忘录模式
- java-设计模式(行为型)-【备忘录模式】