当前位置: 首页 > ds >正文

设计模式简述(十七)备忘录模式

备忘录模式

  • 描述
    • 组件
    • 使用

描述

备忘录模式用于将对象的状态进行保存为备忘录,以便在需要时可以从备忘录会对象状态;其核心点在于备忘录对象及其管理者是独立于原有对象之外的

常用于需要回退、撤销功能的场景。

组件

  • 原有对象(包含自身业务属性 + 创建备忘录 + 从备忘录恢复)
public class Originator {private String state;public void setState(String state) {this.state = state;System.out.println("Setting state to: " + state);}public String getState() {return state;}public Memento createMemento() {return new Memento(state);}public void recoverFromMemento(Memento memento) {state = memento.getState();}
}
  • 备忘录对象(包含原对象需要备份、恢复的属性)
public class Memento {private String state;public Memento(String state) {this.state = state;}public String getState() {return state;}
}
  • 备忘录管理对象
public class Caretaker {private Memento memento;public Memento getMemento() {return memento;}public void setMemento(Memento memento) {this.memento = memento;}
}

使用

public class Sample {public static void main(String[] args) {Originator originator = new Originator();Caretaker caretaker = new Caretaker();originator.setState("State #1");// 原对象创建备忘录对象 并交给备忘录管理对象caretaker.setMemento(originator.createMemento());// 原有对象基于 来自备忘录管理对象的 备忘录对象 进行恢复originator.recoverFromMemento(caretaker.getMemento());System.out.println("Restored State: " + originator.getState());}
}
http://www.xdnf.cn/news/3754.html

相关文章:

  • yolov5 train笔记4 roboflow
  • Android Compose 中 Side Effects 和 State 相关的 API 使用
  • 数据仓库方法论书籍及其阅读建议
  • Linux 库文件详解
  • 自动化测试项目1 --- 唠嗑星球 [软件测试实战 Java 篇]
  • 旧版本NotionNext图片失效最小改动解决思路
  • 解决跨域问题
  • 【质量管理】现代TRIZ问题识别中的功能分析——相互接触分析
  • HarmonyOS NEXT第一课——HarmonyOS介绍
  • FastAPI中的复杂查询与原子更新指南
  • 柔性超声耦合剂的选择与设计-可穿戴式柔性超声耦合剂面临的难题
  • C# 多态性详解:从静态到动态的编程艺术
  • PMP-第七章 项目成本管理(一)
  • 2.1 行列式
  • 【C++】平衡二叉树(AVL树)迭代版
  • 高中数学联赛模拟试题精选学数学系列第7套几何题
  • 【单片机数码管实现第一位开始走0~9,1s后第二位再开始亮】2022-5-2
  • K8S - StatefulSet 与 DaemonSet - 有状态应用部署与节点管理策略
  • QGraphicsView QGraphicsScene QGraphicsItem 的关系
  • 计算几何(简单旋转卡壳)2024昆明邀请赛
  • [FPGA Video IP] Multi-Scaler
  • [Control-Chaos] Heart Broken(心臟破裂)
  • 完整的 VS Code + CMake + Qt + GCC 项目构建方案:EXE 程序与多个 DLL 库
  • Linux运维中常用的磁盘监控方式
  • # 前后端分离象棋对战项目开发记录
  • 安卓游戏APK文件解密与编辑的完整攻略
  • NVIDIA Performance Primitives (NPP) 库全面解析
  • string--OJ1
  • linux的信号量初识
  • Linux-06-磁盘分区类命令