当前位置: 首页 > 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());}
}

相关文章:

  • 使用线性表实现通讯录管理
  • 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
  • 从黄土高原到黄浦江畔,澄城樱桃品牌推介会明日在上海举办
  • 一网红被指涉脱衣殴打霸凌事件,沈阳警方:刑拘1人,处罚5人
  • 女租客欠租后失联,房东开门后无处下脚:40平公寓变垃圾场
  • 争抢入境消费红利,哪些城市有潜力?
  • 49:49白热化,美参议院对新关税政策产生巨大分歧
  • 节前A股持续震荡,“五一”假期持股还是持币过节胜率更高?