粉粉蕉的笔记本粉粉蕉的笔记本
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 设计模式
  • 运维

    • linux命令速查
    • windows命令速查
    • Docker笔记
    • kubernetes学习笔记
    • kubernetes实操笔记
    • 运维工具大全
    • git操作宝典
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • RSS
  • 资源导航
  • 医保
  • 健身

    • 笔记
    • 训练计划
  • 装修攻略
  • 读书笔记

    • 《深度学习》
我也想搭建这样的博客!
🚋开往
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 设计模式
  • 运维

    • linux命令速查
    • windows命令速查
    • Docker笔记
    • kubernetes学习笔记
    • kubernetes实操笔记
    • 运维工具大全
    • git操作宝典
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • RSS
  • 资源导航
  • 医保
  • 健身

    • 笔记
    • 训练计划
  • 装修攻略
  • 读书笔记

    • 《深度学习》
我也想搭建这样的博客!
🚋开往
  • 设计模式

  • 创建型

    • 工厂模式
    • 单例模式
    • 建造者模式
    • 原型模式
  • 结构型

    • 适配器模式
    • 装饰模式
    • 代理模式
    • 外观模式
    • 桥接模式
    • 组合模式
  • 行为型

    • 享元模式
    • 策略模式
    • 模板方法模式
    • 观察者模式
    • 迭代子模式
    • 责任链模式
    • 命令模式
    • 备忘录模式
    • 状态模式
    • 访问者模式
    • 中介者模式
    • 解释器模式

备忘录模式

描述

该模式又被称为“快照模式”。

作用:
若有一个需求:用户可撤销某个函数的执行结果,回到上一步(类似于文本编辑时的Ctrl+Z),则可用到备忘录模式。

代码实现示例

/**用户**/
public class User{

    private String state;

    public void setState(String state) {this.state = state;}

    public String getState() {return state;}
    /**创建备忘录**/
    public Memento createMemento() {
        return new Memento(state);
    }
    /**根据备忘录恢复到以前的状态**/
    public void restoreMemento(Memento m) {this.setState(m.getState());}

}
/**备忘录**/
public class Memento{
   int state;
}
/**备忘录管理**/
public class MementoBook{
    List<Memento> memList;

    public void setMemento(Memento m) {memList.add(m);}

    public Memento getCurrentMemento() {return memList.get(memList.size());}
    
    public Memento popupMemento() {
        Memento memento = memList.get(memList.size());
        memList.remove(memList);
        return memento;
    }
}

可以配合原型模式,当用户状态需要备份时,将当前用户的属性clone并保存下来。待恢复时用这份clone记录即可。

实际应用场景

FAQ

Last Updated: 10/11/23, 6:07 AM
Contributors: dongyz8
Prev
命令模式
Next
状态模式