备忘录方式(Memento) 注册时用的
备忘录模式(Memento) 注册时用的
备忘录模式(Memento) Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Memento(备忘录模式)模式是比较常用的一个模式. Memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态。在对客户端Form表单数据的保存可以考虑该模式,以便在submit后后端验证失败,在客户端还能恢复用户之前输入的大量信息。 缺点是耗费大,如果内部状态很多,再保存一份,无意要浪费大量内存。 在此写了4个java类来描述说明Memento设计模式的实现方式; 1、 Originator.java 原始对象类 2、 Mementor.java 备忘对象类 3、 Domain.java pojo对象类 4、 MementorTest.java 带有main方法的测试类 =============== 1、 Originator.java package memento; public class Originator extends Domain{ private static final long serialVersionUID = 4907974292663819864L; //获得一个备份对象 public Mementor getMementor(){ return new Mementor(this); } //从备份对象中恢复数据 public void restore(Mementor mementor){ this.num = mementor.getNum(); } } =============== 1 end =============== 2、 Mementor.java package memento; public class Mementor extends Domain{ private static final long serialVersionUID = -4320460615295972947L; public Mementor(Originator originator) { this.num = originator.getNum(); } } =============== 2 end =============== 3、 Domain.java package memento; import java.io.Serializable; import java.util.List; public class Domain implements Serializable{ private static final long serialVersionUID = 9003017241187036229L; protected Integer num; } public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } } =============== 3 end =============== 4、 MementorTest.java public class MementorTest { public static void main(String[] args) { Originator originator = new Originator(); originator.setNum(10); Mementor mementor = originator.getMementor(); // 变化后 originator.setNum(11); System.out.println("num = " + originator.getNum()); // 恢复后 originator.restore(mementor); System.out.println("num = " + originator.getNum()); } } =============== 4 end