`
xuedong
  • 浏览: 297686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java常用设计模式之备忘录模式

阅读更多

------------------------------ 备忘录模式(Memento) -------------------------------
(1)
备忘录模式属于行为型模式,其意图是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这

个状态,这样以后就可以将对象恢复到原先保存的状态。
(2)
实例如下:
有一个对象Employee.除了属性外,还需要一个保存,还原状态的方法.
有一个对象Memento,用来记录Employee每一个时刻的状态,
CareTaker,用来保存,拿回Memento.需要一个保存,还原状态的方法.->需要一个指针,一个容器.
package memento;
public class Memento{
    String name;
    int age;
    public Memento(String name,int age){
       this.name = name;
       this.age = age;
    }
}
Employee模式:
package memento;
public class Employee{
    private String name;
    private int age;
    public Employee(String aName,int aAge){
       name = aName;
       age = aAge;
    }
    public void setName(String aName){
       name = aName;
    }
    public void setAge(int aAge){
       age = aAge;
    }
    public Memento  saveMemento(){
       return new Memento(name,age);
    }
    public void restoreMemento(Memento memento){
       age = memento.age;
       name = memento.name;
    }
    public int getAge(){
       return age;
    }
    public String getName(){
       return name;
    }
}
CareTaker代码:
package memento;
import java.util.Vector;
public class CareTaker{
    private Vector v;
    private int  current;
    public CareTaker(){
       current = -1;
       v = new Vector();
    }
    public void setMemento(Memento mem){
       current ++;
       v.add(mem);
    }
    public Memento getMemento(){
       if(current>0){
           current --;
           return(Memento) v.get(current);
       }
       return null;
    }
}
Client代码:
package memento;
public class Client{
    public static void show(Employee e){
       System.out.println("-----------------------------------");
       System.out.println("Name:"+e.getName());
       System.out.println("Age:" + e.getAge());
       System.out.println("-----------------------------------");
    }
    public static void main(String[] args){
       Employee e = new Employee("lili",25);
       CareTaker ct = new CareTaker();
       show(e);
       ct.setMemento(e.saveMemento());
       e.setName("litianli");
       show(e);
       ct.setMemento(e.saveMemento());
       e.setAge(45);
       show(e);
       ct.setMemento(e.saveMemento());
       //restore
       e.restoreMemento(ct.getMemento());
       show(e);
       e.restoreMemento(ct.getMemento());
       show(e);
    }
}

 

分享到:
评论

相关推荐

    java常用设计模式-备忘录模式

    在 Java 中,备忘录模式的实现可以分为三个主要步骤: 首先,需要定义原始对象(Originator),该对象包含需要保存的状态及创建备忘录对象的方法createMemento()和从备忘录对象中恢复先前的状态的方法restore()。 ...

    java常用23中设计模式

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    JAVA23个常用设计模式(ppt下载)

    这23个常用的设计模式涵盖了创建型、结构型和行为型三大类别,是每一个Java开发者应当熟悉并掌握的基础知识。 1. **创建型设计模式**:主要包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。单例...

    Java之23种设计模式解析

    这份资料详细介绍了在Java编程中常用的23种设计模式,旨在提升开发者对于软件设计的理解和应用能力,从而写出更加高效、可维护和可扩展的代码。 首先,我们来看一下23种设计模式的分类:它们可以分为三大类,即创建...

    java几种常用的设计模式源码和心得

    本资源包含了2016年6月20日关于Java常用设计模式的源码和作者的心得体会,这对于我们深入理解和应用这些模式具有很大的帮助。 首先,我们要了解设计模式的基本分类。设计模式分为三大类:创建型模式(Creational ...

    java常用23种设计模式(含源码解说).rar_java常见设计模式23中(含例子代码)

    文档“java常用23种设计模式(含源码解说).docx”中,每一种设计模式都会详细阐述其意图、主要参与者、适用情况、优缺点以及实际应用的源码示例。例如,单例模式确保一个类只有一个实例,并提供全局访问点;工厂方法...

    java 设计模式.23种java常用设计模式

    - **备忘录模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的原始状态。 - **解释器模式**:给定一种语言,定义它的文法表示,并定义一个解释器来解释...

    JAVA常用的设计模式

    Java中的设计模式是一种在软件开发过程中,为了应对特定问题或场景而总结出的可复用的解决方案。设计模式并不是具体的代码或库,而是一种通用的、面向对象的设计思想,可以帮助我们编写更加灵活、可维护和扩展的代码...

    JAVA常用设计模式详解大全.docx

    以下是对标题"JAVA常用设计模式详解大全.docx"中涉及的一些主要设计模式的详细解释: **创建模式** 1. **工厂模式**:工厂模式是一种简单的对象创建方式,它提供一个接口来创建对象,但具体创建哪个类的对象是由...

    常用的设计模式

    描述了对象之间如何相互协作完成单个对象无法独立完成的任务,常见的行为型模式有八种:模板方法模式、观察者模式、状态模式、职责链模式、命令模式、访问者模式、策略模式和备忘录模式。行为型模式的目的是改进对象...

    java的设计模式 《设计模式-java语言中的应用.pdf》

    Java中的序列化机制可以实现备忘录模式。 以上就是Java设计模式的一些基本概念和应用,理解并熟练掌握这些模式对于编写高质量、易于维护的Java代码至关重要。通过阅读《设计模式——Java语言中的应用》这本书,你...

    java设计模式

    内容包括设计模式概述、面向对象设计原则、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式、职责链模式、...

    JAVA常用设计模式详解大全

    - 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者...

    JAVA常用设计模式详解大全.pdf

    本文件详细介绍了Java中常用的几种设计模式,涵盖了创建模式、结构模式和行为模式三大类。 **创建模式**: 1. **工厂模式**:工厂模式是一种简单的抽象化创建对象的方式,它提供一个接口来创建对象,但具体的对象...

    小小工具箱-(备忘录,日历,倒计时)(java源代码)

    7. **设计模式**:为了使代码结构清晰、可维护,开发者可能采用了诸如单例模式(用于日历实例)、工厂模式(用于创建UI组件)等设计模式。 通过这个项目,开发者不仅可以锻炼Java编程技能,还能学习到如何将复杂的...

    设计模式java 版本

    22. **备忘录模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将对象恢复到原先保存的状态。Java中,可以使用序列化或自定义方法来实现。 23. **中介者模式**:...

    java设计模式刘伟源码

    3. 行为型模式(Behavioral Patterns):责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、观察者模式(Observer)、状态...

    Java常用的设计模式

    ### Java常用的设计模式详解 #### 一、工厂模式(Factory) **定义:** 工厂模式是一种创建型设计模式,提供了...以上就是Java中常用的23种设计模式的详细介绍。设计模式不仅能够帮助我们更好地解决软件开发中的常见...

    Java的常用设计模式

    Java设计模式是面向对象编程中的重要概念,它们是软件开发过程中经过验证的解决方案模板,用于解决常见的设计问题。设计模式可以提高代码的可读性、可维护性和复用性,帮助开发者遵循良好的编程实践。本资源包含了一...

Global site tag (gtag.js) - Google Analytics