memento定义:
memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.
memento模式相对也比较好理解,我们看下列代码:
public class originator {
private int number;
private file file = null;
public originator(){}
// 创建一个memento
public memento getmemento(){
return new memento(this);
}
// 恢复到原始值
public void setmemento(memento m){
number = m.number;
file = m.file;
}
}
我们再看看memento类:
private class memento implements java.io.serializable{
private int number;
private file file = null;
public memento( originator o){
number = o.number;
file = o.file;
}
}
可见 memento中保存了originator中的number和file的值. 通过调用originator中number和file值改变的话,通过调用setmemento()方法可以恢复.
memento模式的缺点是耗费大,如果内部状态很多,再保存一份,无意要浪费大量内存.
memento模式在jsp+javabean中的应用
在jsp应用中,我们通常有很多表单要求用户输入,比如用户注册,需要输入姓名和email等, 如果一些表项用户没有填写或者填写错误,我们希望在用户按"提交submit"后,通过jsp程序检查,发现确实有未填写项目,则在该项目下红字显示警告或错误,同时,还要显示用户刚才已经输入的表项.
如下图中 first name是用户已经输入,last name没有输入,我们则提示红字警告.:

这种技术的实现,就是利用了javabean的scope="request"或scope="session"特性,也就是memento模式.
闽公网安备 35060202000074号