返回顶部
首页 > 资讯 > 精选 >行为型设计模式 - 备忘录模式详解
  • 295
分享到

行为型设计模式 - 备忘录模式详解

2023-06-04 22:06:03 295人浏览 安东尼
摘要

|0基本介绍备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态2|0模式结构Originator(发起者):记录当前的状态,负责创

|0基本介绍

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

2|0模式结构

行为型设计模式 - 备忘录模式详解

Originator(发起者):记录当前的状态,负责创建和恢复备忘录

Memento(备忘录):负责存储发起者的状态,在需要的时候提供发起人需要的状态

Caretaker(管理者):管理备忘录

3|0代码演示

(这里我们以单角色、单状态、单备份来演示,思想是相同的,无非是存储数据结构上的区别)

备忘录角色,定义了存储状态的变量,可以根据实际需求定义对应的存储对象

public class Memento {    private String state;    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;    }}

发起者角色,存储状态,并且可以创建备忘录和将状态恢复为备忘录的值

public class Originator {    private String state;    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;    }    public Memento createMemento() {        Memento memento = new Memento();        memento.setState(state);        return memento;    }    public void restoreMemento(Memento memento) {        this.state = memento.getState();    }}

管理者角色,管理了备忘录

public class Caretaker {    private Memento memento;    public Memento getMemento() {        return memento;    }    public void setMemento(Memento memento) {        this.memento = memento;    }}

测试

public class Client {    @Test    public void test() {        //设置初始状态        Originator originator = new Originator();        originator.setState("状态1");        System.out.println("初始状态:" + originator.getState());        //创建管理者        Caretaker caretaker = new Caretaker();        caretaker.setMemento(originator.createMemento());        //更新状态        originator.setState("状态2");        System.out.println("跟新状态:" + originator.getState());        //恢复状态        originator.restoreMemento(caretaker.getMemento());        System.out.println("恢复状态:" + originator.getState());    }}

运行结果

初始状态:状态1跟新状态:状态2恢复状态:状态1

4|0模式分析

优点:

  • 给用户提供了一种可以恢复状态的机制,使用户可以比较方便的回退到某个历史的状态
  • 实现了信息的封装,使用户不需要关心备忘录中状态的保存细节

缺点:

  • 在实际应用中,备忘录模式都是多状态和多备份的,发起人角色的状态需要存储到备忘录对象中,对资源的消耗是比较严重的,为了节约内存,可以配合原型模式使用

应用场景:

  • 游戏的存档
  • CTRL + Z 撤销
  • 浏览器的后退
  • 数据库事务管理
  • ... ...

--结束END--

本文标题: 行为型设计模式 - 备忘录模式详解

本文链接: https://lsjlt.com/news/240075.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 行为型设计模式 - 备忘录模式详解
    |0基本介绍备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态2|0模式结构Originator(发起者):记录当前的状态,负责创...
    99+
    2023-06-04
  • .Net行为型设计模式之备忘录模式(Memento)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、备忘录模式的代码实现六、备忘录模式的实现要点:1、备忘录模式的主要优点有:2...
    99+
    2024-04-02
  • .Net行为型设计模式之备忘录模式怎么实现
    这篇文章主要讲解了“.Net行为型设计模式之备忘录模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net行为型设计模式之备忘录模式怎么实现”吧!一、动机(Motivate)我们看...
    99+
    2023-06-30
  • Java设计模式之java备忘录模式详解
    目录引言备忘录模式(Memento Pattern)角色为什么会出现守护者对象(负责人)?备忘录模式实现框架下棋案例备忘录模式总结优点缺点适用场景注意细节参考文章总结引言 备忘录模式...
    99+
    2024-04-02
  • Java设计模式初识之备忘录模式详解
    目录简介典型实现总结优点缺点适用场景源码简介 备忘录设计模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于实现防丢失、撤销、恢复等功能。...
    99+
    2022-11-13
    Java 设计模式 备忘录模式 Java 备忘录模式 Java 设计模式
  • Java设计模式之备忘录模式
    无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,也提供撤...
    99+
    2022-11-13
    Java 设计模式 备忘录模式
  • Python设计模式中的备忘录模式
    目录备忘录模式应用场景代码示例总结备忘录模式 备忘录模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 简单来...
    99+
    2024-04-02
  • 深入理解Java设计模式之备忘录模式
    目录一、什么是备忘录模式二、备忘录模式的结构三、备忘录模式的使用场景四、备忘录模式的优缺点五、备忘录模式的实现总结一、什么是备忘录模式 定义:在不破坏封闭的前提下,捕获一个对象的内部...
    99+
    2024-04-02
  • JAVA设计模式之备忘录模式原理与用法详解
    本文实例讲述了JAVA设计模式之备忘录模式。分享给大家供大家参考,具体如下:备忘录模式:又叫做快照模式,指在不破坏封装性的前提下,获取到一个对象的内部状态,并在对象之外记录或保存这个状态。在有需要的时候可将该对象恢复到原先保存的状态。我们相...
    99+
    2023-05-31
    java 设计模式 备忘录模式
  • Python 设计模式行为型解释器模式
    目录一、解释器模式二、应用场景三、代码示例一、解释器模式 解释器模式,开发者自定义一种 “有内涵” 的语言(或者叫字符串),并设定相关的解释规则,输入该字符串...
    99+
    2024-04-02
  • 怎样深入理解Java设计模式的备忘录模式
    本篇文章为大家展示了怎样深入理解Java设计模式的备忘录模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、什么是备忘录模式定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这...
    99+
    2023-06-25
  • Java行为型设计模式之模板方法详解
    目录模板方法模式应用场景主要角色优缺点模板方法模式的基本使用创建抽象模板角色创建具体实现客户端调用模板方法模式 模板方法模式属于行为型设计模式。它是指定义一个操作中的算法的框架,而将...
    99+
    2024-04-02
  • .Net行为型设计模式之解释器模式(Interpreter)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、解释器模式的代码实现六、解释器模式的实现要点:1、解释器模式的主要优点有:2...
    99+
    2024-04-02
  • java设计模式--原型模式详解
    目录引例原型模式浅拷贝在原先Sheep类基础上实现Cloneable接口,重写clone方法。客户端调用Sheep类新添的Cow类客户端调用克隆深拷贝1.Cow类也实现Cloneab...
    99+
    2024-04-02
  • Java设计模式之初识行为型模式
    目录一、行为型模式二、模板方法模式2.1 例子2.2 模板方法使用场景三、策略模式3.1 例子3.2 使用场景四、状态模式五、中介者模式六、观察者模式6.1 使用场景一、行为型模式 ...
    99+
    2024-04-02
  • Python 设计模式行为型访问者模式
    目录一、访问者模式(Visitor Pattern)二、应用场景三、代码示例一、访问者模式(Visitor Pattern) 数据结构中保存着许多元素,当我们希望改变一种对元素的处理...
    99+
    2024-04-02
  • Python设计模式行为型责任链模式
    目录一、责任链模式二、应用场景三、代码示例一、责任链模式 责任链模式,将多个处理方法连接成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求。通常这条链条是一个对象...
    99+
    2024-04-02
  • Python设计模式行为型观察者模式
    目录一、观察者模式二、应用场景三、代码示例一、观察者模式 观察者模式,必须包含 “观察者” 和 “被观察者” 这两个角色,并且观察者和...
    99+
    2024-04-02
  • Python设计模式中的行为型策略模式
    目录一、策略模式二、应用场景三、代码示例一、策略模式 策略模式中,首先定义了一系列不同的算法,并把它们一一封装起来,然后在策略类中,使这些算法可以相互替换。这意味着,让一个类的行为(...
    99+
    2024-04-02
  • .Net行为型设计模式之命令模式(Command)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、命令模式的代码实现六、命令模式的实现要点:1、命令模式的优点:2、命令模式的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作