您的位置:首页技术文章
文章详情页

java设计模式之Memento

【字号: 日期:2024-06-26 18:18:57浏览:5作者:猪猪
内容: Memento定义:memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.Memento模式相对也比较好理解,我们看下列代码:public class Originator { private int number; private File file = null;public Originator(){}// 创建一个Mementopublic 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没有输入,我们则提示红字警告.: IMG http://www.jdon.com/designpatterns/images/memento.gif[/IMG]这种技术的实现,就是利用了Javabean的scope='request'或scope='session'特性,也就是Memento模式.具体示例和代码见 JavaWorld的英文原文 , Javabean表单输入特性参见我的另外一篇文章. Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
标签: Java
相关文章: