`
lovang
  • 浏览: 29645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • leayaya: 建议示例再做一下处理,比如实现和对象的操作换一下
    模式Bridge

模式Memento

    博客分类:
  • java
阅读更多
设计模式之Memento(备忘机制)
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模式.
具体示例和代码见 JavaWorld的英文原文 , Javabean表单输入特性参见我的另外一篇文章.
分享到:
评论

相关推荐

    Memento模式

    **Memento模式**,也被称为快照模式,是设计模式中的行为模式之一,它在软件工程中用于保存对象的状态,以便在需要时可以恢复到先前的状态。Memento模式的核心思想是实现对对象状态的无损保存和恢复,而无需暴露对象...

    设计模式之备忘录模式(Memento)

    备忘录模式(Memento Pattern)是设计模式中的一种行为模式,主要目的是在不违反封装原则的情况下,保存一个对象的内部状态,以便在需要时能够恢复到先前的状态。这种模式通常用于实现撤销/重做功能或者在游戏中保存...

    C++ Memento模式

    **C++ Memento模式** Memento模式是一种行为设计模式,属于设计模式中的“状态保存”类别,它在不破坏封装性的前提下,捕获一个对象的内部状态,并可以在需要时恢复对象到先前的状态。这种模式常用于实现撤销/重做...

    C++设计模式.pdf

    Memento模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 #### Mediator模式 Mediator模式用一个中介对象来封装一系列的对象交互...

    设计模式原理与应用之行为模式.pptx

    Memento模式是一种行为模式,旨在解决在不破坏封装性的前提下,捕获一个对象的内部状态的问题。该模式可以在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 Observer模式 Observer...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    Memento模式在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 #### 3.6 Mediator模式 Mediator模式用一个中介对象来封装一系列的对象...

    C++ 设计模式 (C++ 设计模式精解 + 代码实现)

    Memento模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 #### 3.6 Mediator模式 Mediator模式用一个中介对象来封装一系列的对象...

    C++面向对象23种设计模式实现源码DesignPattern.zip

    17.备忘录模式Memento展示了如何安全地保存和恢复对象的状态,避免对原始对象进行直接的修改。 这些设计模式的C++实现源码为学习者提供了实践和参考,有助于深入理解面向对象设计的核心理念,提升软件设计能力。...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码.pdf

    Memento模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 #### Mediator模式 Mediator模式用一个中介对象来封装一系列的对象交互...

    23种设计模式(C++)

    Memento模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 #### Mediator模式 Mediator模式用一个中介对象来封装一系列的对象交互,...

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    Memento模式在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复。在C++中,Memento模式通常涉及到创建备忘录类来存储对象的状态,通过恢复备忘录来恢复对象的状态。 #### ...

    GoF 23种设计模式解析附C++实现源码(2nd Edition)

    Memento模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 #### Mediator模式 Mediator模式用一个中介对象来封装一系列的对象交互...

    设计模式之备忘录模式(Memento Pattern)

    备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码

    Memento模式捕获一个对象的内部状态,以便稍后恢复。这种模式可以用来实现撤销功能,使对象能够在状态改变后返回到以前的状态。 #### Mediator模式 Mediator模式用一个中介对象来封装一系列的对象交互,使得各个...

    23种设计模式幽默见解

    Memento模式是一种行为型设计模式,用于在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。在幽默的例子中,记录与女朋友的对话历史可能需要...

    GOF的23中设计模式附C++实现

    Memento模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。 #### Mediator模式 Mediator模式用一个中介对象来封装一系列的对象交互,...

Global site tag (gtag.js) - Google Analytics