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

备忘录设计模式

阅读更多

 备忘录(Memento)模式又称标记(Token)模式。GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

/**
 * 发起人角色
 */
public class Originator {

    private String state;

    /**
     * 工厂方法返回一个新备忘录对象
     */
    public MementoIF createMemento() {
        return new Memento(this.state);
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
        System.out.println("Current state is " + this.state);
    }

    /**
     * 将发起人恢复到备忘录对象记录的状态
     */
    public void restoreMemento(MementoIF memento) {
        Memento aMemento = (Memento) memento;
        this.setState(aMemento.getSavedState());
    }

    /**
     * 内部成员类,备忘录
     */
    protected class Memento implements MementoIF {
        private String savedState;

        public Memento(String someState) {
            this.savedState = someState;
        }

        public String getSavedState() {
            return savedState;
        }

        public void setSavedState(String savedState) {
            this.savedState = savedState;
        }
    }
}

 

public interface MementoIF {

}

 

/**
 * 负责人角色
 */
public class Caretaker {

    private MementoIF memento;
    /**
     * 备忘录的取值方法
     */
    public MementoIF retrieveMemento() {
        return this.memento;
    }
    /**
     * 备忘录的赋值方法
     */
    public void saveMemento(MementoIF memento) {
        this.memento = memento;
    }
}

 

public class Client {
    //发起人
    private static Originator originator = new Originator();
    //负责人
    private static Caretaker caretaker = new Caretaker();

    public static void main(String[] args) {
        //设置发起人对象状态
        originator.setState("ON");
        //创建备忘录对象将这个对象存储起来
        caretaker.saveMemento(originator.createMemento());
        //改变发起人对象状态
        originator.setState("OFF");
        //恢复发起人对象状态
        originator.restoreMemento(caretaker.retrieveMemento());
    }
}

 

分享到:
评论

相关推荐

    【Java设计模式】备忘录模式

    Java中的备忘录设计模式允许开发人员捕获和恢复对象的内部状态,而不违反封装。 ## 二、详细解释及实际示例 1. **实际示例**: - 一个文本编辑器应用程序可以利用Java中的备忘录设计模式来实现撤销和重做功能。...

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

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

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

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

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

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

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

    备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。这个模式的名字来源于我们日常生活中使用的备忘录,它记录了一些重要的信息,当需要...

    设计模式之备忘录模式

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

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

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

    设计模式-备忘录

    备忘录模式是一种常用的设计模式,它在软件工程中用于保存对象的状态,以便在需要时恢复到之前的状态。这种模式的主要目标是实现数据的安全存储,同时保持对象的封装性,避免对外部对象直接访问其内部状态。在iOS...

    Java设计模式-备忘录

    **Java设计模式——备忘录模式详解** 备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获并存储其内部状态,以便稍后恢复到该状态。这种模式常用于在游戏中保存进度、撤销/重做操作、以及在复杂...

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

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

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

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

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

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

    设计模式之备忘录(memento)

    备忘录(Memento)模式是一种行为设计模式,它在不破坏封装性的前提下,捕获一个对象的内部状态,并允许该对象在以后恢复到这个状态。这种模式常用于需要保存和恢复对象状态的情景,例如撤销/重做功能、游戏存档或...

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

    备忘录模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是为了保存对象的状态,以便在需要的时候能够恢复到之前的状态。备忘录模式的核心思想是通过创建一个备忘录对象来存储原对象的状态,这个备忘录...

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

    备忘录模式是一种在不破坏封装性的前提下,捕获一个对象的状态,并允许在未来的某个时刻恢复这个状态的设计模式。这种模式在很多场景下都非常有用,例如在游戏中保存进度、在编辑器中撤销/重做操作等。备忘录模式的...

    备忘录模式

    备忘录设计模式是软件设计模式中的一种,它在对象状态需要被保存以便于后续恢复时非常有用。这种模式的核心思想是提供一个方法来捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在需要的时候恢复...

    备忘录模式Demo

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

    iOS 设计模式 备忘录模式

    备忘录模式是设计模式中的一种,它主要用于保存对象的状态,以便在未来恢复到该状态。这个模式尤其适用于需要撤销/重做功能的场景。 备忘录模式的核心思想是创建一个备忘录对象,该对象存储另一个对象的内部状态,...

    C#备忘录模式 代码例子

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

    备忘录模式实现及案例

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

Global site tag (gtag.js) - Google Analytics