首页 > 其他分享 >设计模式学习(二十):备忘录模式

设计模式学习(二十):备忘录模式

时间:2022-11-12 16:55:56浏览次数:61  
标签:Person 二十 备忘录 person new 设计模式 public

设计模式学习(二十):备忘录模式

作者:Grey

原文地址:

博客园:设计模式学习(二十):备忘录模式

CSDN:设计模式学习(二十):备忘录模式

备忘录模式

备忘录模式是一种行为型模式。

用于记录对象的某个瞬间,类似快照的功能,

应用实例:

  • 游戏中的「后悔药」;

  • 打游戏时的存档;

  • Windows 操作系统里的撤销操作( ctr + z );

  • 浏览器的后退功能。

一个简单的示例

通过序列化的方式将数据存盘,然后从盘中提取并反序列化数据。

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "zhangsan";
        person.age = 12;
        new Main().save(person);
        new Main().load();
    }

    public void save(Person person) {
        File c = new File("/tank.data");
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(c));) {
            oos.writeObject(person);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void load() {
        File c = new File("/tank.data");
        try (ObjectInputStream oos = new ObjectInputStream(new FileInputStream(c));) {
            Person myTank = (Person) oos.readObject();
            System.out.println(myTank);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

注:其中的 Person 类需要实现序列化接口(即:实现 Serializable 接口)

public class Person implements Serializable {
    
 private static final long serialVersionUID = 8694061726340087034L;
 public String name;
    public int age;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

上述示例的 UML 图如下

image

备忘录模式应用

  • Spring 中 StateManageableMessageContext.createMessagesMemento() 方法

UML 和 代码

UML 图

代码

更多

设计模式学习专栏

参考资料

标签:Person,二十,备忘录,person,new,设计模式,public
From: https://www.cnblogs.com/greyzeng/p/16884119.html

相关文章

  • 设计模式学习(十九):访问者模式
    设计模式学习(十九):访问者模式作者:Grey原文地址:博客园:设计模式学习(十九):访问者模式CSDN:设计模式学习(十九):访问者模式访问者模式访问者模式是一种行为型模式。访问者模式......
  • 设计模式学习(十八):迭代器模式
    设计模式学习(十八):迭代器模式作者:Grey原文地址:博客园:设计模式学习(十八):迭代器模式CSDN:设计模式学习(十八):迭代器模式迭代器模式迭代器模式是一种行为型模式。迭代器最典......
  • 设计模式学习(十七):状态模式
    设计模式学习(十七):状态模式作者:Grey原文地址:博客园:设计模式学习(十七):状态模式CSDN:设计模式学习(十七):状态模式状态模式状态模式是一种行为型模式。对象的行为依赖于它的......
  • 设计模式学习(十六):责任链模式
    设计模式学习(十六):责任链模式作者:Grey原文地址:博客园:设计模式学习(十六):责任链模式CSDN:设计模式学习(十六):责任链模式责任链模式责任链模式是一种行为型模式。举例说明:有......
  • 设计模式学习(十五):策略模式
    设计模式学习(十五):策略模式作者:Grey原文地址:博客园:设计模式学习(十五):策略模式CSDN:设计模式学习(十五):策略模式策略模式策略模式是一种行为型模式,它定义了一组算法,将每个......
  • 《STM32MP1 M4裸机HAL库开发指南》第二十章 串口通信实验
    第二十章串口通信实验​本章节我们来学习STM32MP1的串口使用方法,并通过串口发送和接收数据。​本章将分为如下几个小节:​20.1、串口简介;​20.2、STM32MP1串口简介;​20.......
  • 设计模式-建造者模式
    在我们生活中的对象比如汽车,它是由车轮、车架、发动机等组合起来的对象,但是往往使用的人只想要一辆汽车并不想知道创建汽车的过程此时就可以使用建造者模式。在软件开发中,也......
  • 设计模式学习(十四):模板方法
    设计模式学习(十四):模板方法作者:Grey原文地址:博客园:设计模式学习(十四):模板方法CSDN:设计模式学习(十四):模板方法模板方法模板方法是一种行为型模式。假设我们要实现一个游......
  • Java静态代理设计模式模式(多线程Runnable)
    静态代理设计模式,就是代理对象来帮你忙前忙后,你负责出席一下就好了。需要:1.实现相同的接口2.真实角色3.代理角色,里面有一个成员是接口对象(实际上是真实角色----接口实......
  • 设计模式学习(十三):观察者模式
    设计模式学习(十三):观察者模式作者:Grey原文地址:博客园:设计模式学习(十三):观察者模式CSDN:设计模式学习(十三):观察者模式观察者模式观察者模式是一种行为型模式。在对象之间......