`
土匪一份子
  • 浏览: 18087 次
  • 性别: Icon_minigender_1
  • 来自: 金门岛对面
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式之Memento(注释状态?)

阅读更多
Memento备望录模式定义:
memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.

Memento模式相对也比较好理解,我们看下列代码:

public class Originator {

  public int number;
  public 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{

  public int number;

  public 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模式.
分享到:
评论

相关推荐

    JAVA之23种设计模式的完整实例代码和注释

    本资源“JAVA之23种设计模式的完整实例代码和注释”涵盖了所有GOF(Gang of Four)提出的23种经典设计模式,它们是软件设计的基石。 1. **创建型模式**(Creational Patterns): - **单例模式(Singleton)**:...

    二十三种设计模式【PDF版】

    设计模式之 Memento(注释状态?) 很简单一个模式,就是在内存中保留原来数据的拷贝. 设计模式之 Interpreter(解释器) 主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成...

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...

    23种设计模式源码中文注释

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板。Java中的23种设计模式被广泛接受并应用于各种项目中,它们是面向对象编程中不可或缺的一部分。这些模式帮助开发者提高代码的可重用性、...

    23种设计模式整理(很全).docx

    * Memento(注释状态?)模式:很简单一个模式,就是在内存中保留原来数据的拷贝。 * Interpreter(解释器)模式:主要用来对语言的分析,应用机会不多。 * Visitor(访问者)模式:访问者在进行访问时,完成一系列...

    25种设计模式样例.zip

    本资源“25种设计模式样例.zip”包含的是.NET平台下的25个经典设计模式的实例代码,每个模式都有详细的注释,非常适合初学者和有经验的开发者用来学习和参考。 设计模式可以分为三大类:创建型、结构型和行为型。...

    Java23种设计模式源代码

    本资源包含了23种经典的Java设计模式的源代码实现,每种模式都有详细的注释,是学习和理解设计模式的宝贵资料。 一、创建型模式(Creational Patterns) 1. 单例模式(Singleton):确保一个类只有一个实例,并提供...

    设计模式迷你手册

    这些设计模式的源码注释可以帮助你更深入地理解它们的工作原理和应用场景。在实践中,设计模式并不是孤立使用的,而是相互配合,共同提升软件设计的质量。通过阅读这本迷你手册,你将能够更好地应对各种编程挑战,写...

    GOF23种设计模式C#实现

    本资源为GOF的23种设计模式提供了C#语言的具体实现,并附带了详细的注释、优缺点以及适用场景的说明。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供一个全局访问点。在C#中,可以使用`static`...

    23种设计模式之Java实现

    在这个名为"23种设计模式之Java实现"的资源中,包含了Java语言对23个经典设计模式的实现,这些模式源自《设计模式:可复用面向对象软件的基础》这本书。 1. **创建型模式**(Creational Patterns): - **单例模式...

    设计模式C++实现

    本资料包"设计模式C++实现"包含了24种经典的设计模式,每一种模式都有详细的注释,使得学习者能够更好地理解和应用。 首先,我们来看看这24种设计模式的基本分类。它们主要分为三大类:创建型模式(Creational ...

    23中设计模式

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可...通过阅读和运行这些带有注释的代码,可以更直观地理解每种设计模式的工作原理和应用场景,对于提升软件设计能力大有裨益。

    23种设计模式的源代码

    这个压缩包包含了23种经典的设计模式的源代码,尽管注释是英文的,但通过深入学习和理解,可以提升你的Java设计能力和软件架构技能。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在...

    C++23种设计模式一点就通

    ### C++23种设计模式解析 #### 一、创建型模式 **1. 工厂模式 (FACTORY)** - **应用场景**:在软件开发过程中,经常需要根据不同的条件来选择创建不同的对象实例,例如根据用户的选择创建不同类型的对象。 - **...

    Dpatoolkit

    - **注释和文档**:源代码中的注释可以帮助用户理解代码逻辑和设计模式的应用场景。 - **测试用例**:包含的测试代码展示了设计模式在实际使用中的效果,有助于验证模式的正确性和有效性。 通过分析Dpatoolkit的源...

    23种设计模式代码案例与总结Java版(每种模式有详细注释与类图)

    这个压缩包“23种设计模式代码案例与总结Java版”包含了23个主要的设计模式,每个模式都有详细的注释和类图,方便学习和理解。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。通过懒汉...

    JavaDPImpl:用Java编写的基本设计模式实现

    通过JavaDPImpl项目,你可以深入理解这些设计模式的原理和应用场景,通过阅读代码和注释,可以提升你的编程思维和设计能力。在实际开发中,灵活运用设计模式能够提高代码的可读性、可维护性和复用性,有助于构建更加...

    24种设计模式介绍与6大设计原则

    ### 24种设计模式与6大设计原则详解 #### 一、设计模式概述 设计模式是一种被广泛接受的解决方案,用于解决软件设计中的常见问题。它们不是完成任务的具体代码,而是一种指导思想,帮助开发者更好地组织代码,提高...

    DesignPatterns

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的设计问题。这些模式是经验丰富的开发者在解决特定问题时...此外,这个资源可能还会包含相关的文档和注释,帮助你进一步学习和掌握设计模式的精髓。

Global site tag (gtag.js) - Google Analytics