打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
设计模式之Memento(备忘机制)

设计模式之Memento(备忘机制)

板桥里人 http://www.jdon.com 2002/05/05

模式实战书籍《Java实用系统开发指南》

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中的numberfile的值. 通过调用Originatornumberfile值改变的话,通过调用setMemento()方法可以恢复.

Memento模式的缺点是耗费大,如果内部状态很多,再保存一份,无意要浪费大量内存.

Memento模式在Jsp+Javabean中的应用
Jsp应用中,我们通常有很多表单要求用户输入,比如用户注册,需要输入姓名和Email, 如果一些表项用户没有填写或者填写错误,我们希望在用户按"提交Submit",通过Jsp程序检查,发现确实有未填写项目,则在该项目下红字显示警告或错误,同时,还要显示用户刚才已经输入的表项.

如下图中 First Name是用户已经输入,Last Name没有输入,我们则提示红字警告.:

这种技术的实现,就是利用了Javabeanscope="request"scope="session"特性,也就是Memento模式.

具体示例和代码见 JavaWorld的英文原文 , Javabean表单输入特性参见我的另外一篇文章.

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
设计模式之备忘录(Memento Pattern)模式
简说设计模式——备忘录模式
TypeScript实现设计模式——策略模式
设计模式23:Memento Pattern (备忘录模式)
设计模式之备忘录模式
C#设计模式系列:备忘录模式(Memento)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服