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

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

备忘录模式

  • 描述
    • 组件
    • 使用

描述

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

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

组件

  • 原有对象(包含自身业务属性 + 创建备忘录 + 从备忘录恢复)
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.dtcms.com/a/169358.html

相关文章:

  • 使用线性表实现通讯录管理
  • AtCoder Beginner Contest 404(ABCDE)
  • C++八股--5--设计模式--适配器模式,代理模式,观察者模式
  • Maven安装配置以及Idea中的配置教程
  • ElasticSearch深入解析(十):字段膨胀(Mapping 爆炸)问题的解决思路
  • Servlet(二)
  • 安卓基础(悬浮窗和摄像)
  • 大数据引领行业革命:深度解析与未来趋势
  • 【网络原理】深入理解HTTPS协议
  • 智能家居的OneNet云平台
  • 接口测试的核心思维(基础篇)
  • C语言蓝桥杯真题代码
  • java学习之数据结构:二、链表
  • 第38课 常用快捷操作——双击“鼠标左键”进入Properties Panel
  • C++模版结构体的使用
  • 使用Rust + WebAssembly提升前端渲染性能:从原理到落地
  • 嵌入式硬件篇---STM32 系列单片机型号命名规则
  • VMware Pro17.6虚拟机工具软件安装教程
  • Mybatis学习(上)
  • NHANES指标推荐:triglyceride levels
  • **Java面试大冒险:谢飞机的幽默与技术碰撞记**
  • QWEN 2.5模型结构解析与代码解读
  • 《算法导论(第4版)》阅读笔记:p4-p5
  • n8n工作流自动化平台的实操:Cannot find module ‘iconv-lite‘
  • 安卓基础(startActivityForResult和onActivityResult)
  • MySQL中的窗口函数
  • 2025年- H22-Lc130-206. 反转链表(链表)---java版
  • AnimateCC教学:照片旋转飞舞并爆炸....
  • NoxLucky:个性化动态桌面,打造独一无二的手机体验
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 19)