备忘录模式(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

你可能感兴趣的:(备忘录模式)