`
linbzh
  • 浏览: 71358 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

memento备忘录模式

阅读更多

      memento备忘录模式,就是利用平常所说的备忘录的思想,把一些可能在以后要用到的东西先记起来,等到要用的时候就可以查询备忘录,再次利用。在软件设计中就是将对象的状态存储起来,根据需要,这个对象只要向备忘录发出一个请求就能够从备忘录读取数据并恢复到先前的状态。
     既然是备忘录就会有一个或以上的信息来源,一条或以上的记录和一个记录集(记录管理)。需要存储信息的对象就是信息的来源。
     因为隐私的原因,备忘录只有,记录人才能看到。同样的,备忘录对象必须对源发者之外的对象隐藏该原发者的内部变量的值。所以,在java中,记录类一般设计为内容类。
     对于数据的储存方式,在"j道"写道:"设计模式之Memento:很简单一个模式,就是在内存中保留原来数据的拷贝. ",应不然,对于存储的方式应该根据不同的需要可以选择不同的形式,持久或者非持久。

一般架构:

//源发者,信息来源
public class Originator{
    private String state;
    public Memento createMemento(){//创建记录
       return new Memento( this.state );
   }
   public void restoreMemento(Memento memento){//恢复记录
       this.setState(memento.getState());
   }
   public String getState(){//获取记录
       return this.state;
   }
   public void setState(String state){//设置记录
       this.state = state;
   }
   //记录
  class Memento {
        private String savedState;
           private Memento(String someState){
               savedState = someState;
           }
           private void setState(String someState){
               savedState = someState;
           }
           private String getState(){
               return savedState;
           }
     }
}
//简单记录集(记录管理)
public class Caretaker{
    private Memento memento;
    public Memento retrieveMemento(){//获取记录
        return this.memento;
   }
    public void saveMemento(Memento memento){//保存记录
        this.memento = memento;
   }
}
//多记录集(记录管理)
public class Caretaker{
    private Originator originator;
    private Vector mementos = new Vector();
    private int total;
    public Caretaker(Originator originator){ 
        this.originator = originator;
        total= 0;
    }
    public void createMemento(){ //创建
     Memento memento = this.originator.createMemento();
        mementos.addElement(memento);
        total++;
    }
   public void saveMemento(Memento memento){//保存记录
     mementos.addElement(memento);
        total++;
   }
    public void retrieveMemento(int index){ //获取
      Memento memento = (Memento) mementos.elementAt  (index);
        originator.restoreMemento(memento);
    }
    public void removeMemento(int index){//删除
     mementos.removeElementAt(index);
        total--;
   }
}

         在web程序中的session是mememto备忘录模式应用的一个典型例子。由servlet的session的函数setAttribute

(String,Object)和函数getAttribute(String),可以看出session的内部实现应该是利用一个哈希表储存对象状态的。

分享到:
评论

相关推荐

    C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式

    备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到先前的状态。这种模式在需要撤销/重做功能、...

    设计模式中的Memento备忘录模式的在iOS App开发中的运用

    【Memento备忘录模式】在iOS App开发中的应用 备忘录模式是一种设计模式,它的核心在于在不破坏对象封装性的前提下,保存并恢复对象的内部状态。这种模式在iOS开发中尤为有用,特别是在需要撤销/重做功能、游戏存档...

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

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

    备忘录模式.rar备忘录模式.rarjava设计模式

    备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要记录用户操作历史或者游戏进度...

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

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

    java设计模式-备忘录模式源代码

    在Java中,备忘录模式通常包括三个关键角色:原始对象(Originator)、备忘录(Memento)和管理者(Caretaker)。原始对象是需要保存状态的对象,它创建并存储在备忘录中的状态。备忘录负责存储原始对象的状态,而...

    设计模式_备忘录模式.zip

    备忘录模式是一种在软件工程中广泛使用的结构型设计模式,其主要目的是为了在不破坏封装性的前提下,能够安全地保存对象的状态,并在需要时恢复到先前保存的状态。这种模式通常用于那些需要记录和回滚操作的重要场景...

    设计模式之备忘录模式

    备忘录模式(Memento Pattern)是软件设计模式中的一种,属于行为模式。它提供了一种方式来恢复对象到之前的状态,即“撤销”操作。备忘录模式的核心思想是保存对象的内部状态,以便在需要时能恢复到这个状态,而...

    设计模式-备忘录模式(讲解及其实现代码)

    备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。备忘录模式的核心思想是封装对象的状态,将其保存到一个独立的对象(备忘录)中,而...

    设计模式之备忘录模式,内含可运行代码及详细解释

    备忘录模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在需要保护对象内部状态不被外部篡改的场景下。备忘录模式的核心思想是提供一种方法来捕获一个对象的内部状态,并在该对象之外保存这个状态...

    C#备忘录模式 代码例子

    备忘录模式是一种设计模式,它在不破坏封装性的前提下,保存对象的内部状态,以便在需要的时候恢复。在C#中,备忘录模式常用于实现撤销/重做功能,或者在需要记录和恢复对象状态的情况下。下面将详细解释备忘录模式...

    备忘录模式实现及案例

    备忘录模式是一种设计模式,属于行为模式类型,它的主要作用是保存对象的状态,以便在需要的时候能够恢复到之前的状态。这种模式的核心在于提供一种方式,可以在不破坏封装的前提下,捕获并存储一个对象的内部状态,...

    备忘录模式Demo

    备忘录模式是一种设计模式,它在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要记录用户操作或者游戏进度等场景,允许...

    设计模式之备忘录模式的Java版本实现

    在Java中实现备忘录模式,我们通常会定义三个关键角色:原始对象(Originator)、备忘录(Memento)和照料者(Caretaker)。首先,原始对象创建并维护其状态,它知道如何创建备忘录,并且可以在需要时使用备忘录恢复...

    Memento备忘录设计模式实例-绘图程序

    这是运用Memento设计模式,设计的一个简单实例, 你可以通过工具栏选择绘制不同图形,使用备份创建备忘录,然后选择恢复进行绘制图形的恢复。 http://blog.csdn.net/ziyuanxiazai123/article/details/12421265

    设计模式 - 备忘录模式(C++实例)

    在C++中,备忘录模式通常包含三个角色:发起人(Originator)、备忘录(Memento)和照料者(Caretaker)。发起人是创建和恢复状态的对象,备忘录负责存储发起人的状态,而照料者则负责管理备忘录,避免对发起人状态...

    设计模式之备忘录(memento)

    备忘录模式主要涉及三个角色: 1. **发起人(Originator)**:需要保存其内部状态的对象。它创建并存储备忘录,也可以从备忘录恢复状态。 2. **备忘录(Memento)**:存储发起人的内部状态。备忘录是发起人的私有...

    备忘录模式 C++ 实现

    备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获和恢复一个对象的内部状态。在C++中实现备忘录模式,可以有效地帮助开发者在程序运行过程中保存对象的状态,以便在需要时恢复到之前的状态,这...

Global site tag (gtag.js) - Google Analytics