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

23种设计模式——备忘录模式(Memento Pattern)

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页:Meteors.的博客
💞当前专栏:设计模式
✨特色专栏:知识分享
🥭本文内容:23种设计模式——备忘录模式(Memento Pattern)
📚 ** ps **  :阅读文章如果有问题或者疑惑,欢迎在评论区提问或指出。


目录

一. 背景

二. 介绍

三. 主要角色

四. 代码示例

五. 应用场景

六. 优缺点

七. 总结


一. 背景

备忘录模式,就像它的名字一样,是用来记录某些功能的设计模式,并且能够进行之后的查阅。在实际很多类似游戏的档案保存、设置保存。或多或少都存在备忘录模式的身影。下面,我将为你详细的介绍备忘录模式以及它的一些基本使用!


二. 介绍

备忘录模式(Memento Pattern)是23种经典设计模式中的一种,属于行为型模式。它的主要目的是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便日后可以将该对象恢复到原先保存的状态。


三. 主要角色

  1. Originator(发起人):需要保存状态的对象,可以创建一个备忘录来记录当前时刻自身的状态,并可以使用备忘录恢复内部状态。
  2. Memento(备忘录):负责存储Originator对象的内部状态,可以防止Originator以外的其他对象访问备忘录。
  3. Caretaker(管理者):负责存储备忘录,但不能对备忘录的内容进行操作或检查。

四. 代码示例

// Memento类
class Memento {private String state;public Memento(String state) {this.state = state;}public String getState() {return state;}
}// Originator类
class Originator {private String state;public void setState(String state) {this.state = state;}public String getState() {return state;}public Memento saveStateToMemento() {return new Memento(state);}public void getStateFromMemento(Memento memento) {state = memento.getState();}
}// Caretaker类
class Caretaker {private Memento memento;public void setMemento(Memento memento) {this.memento = memento;}public Memento getMemento() {return memento;}
}// 使用示例
public class MementoPatternDemo {public static void main(String[] args) {Originator originator = new Originator();Caretaker caretaker = new Caretaker();originator.setState("State #1");originator.setState("State #2");caretaker.setMemento(originator.saveStateToMemento());originator.setState("State #3");System.out.println("Current State: " + originator.getState());originator.getStateFromMemento(caretaker.getMemento());System.out.println("Restored State: " + originator.getState());}
}

五. 应用场景

  • 需要保存和恢复数据的相关场景。
  • 撤销操作的实现,如文本编辑器的撤销功能。
  • 事务回滚操作,如数据库事务的回滚。

六. 优缺点

备忘录模式的优点

  • 保护对象的封装性,避免暴露其内部细节。
  • 简化了Originator类的职责,让其不需要管理和保存其内部状态的副本。
  • 提供了一种状态恢复机制,可以方便地将对象恢复到某个历史状态。

备忘录模式的缺点

  • 如果需要保存的状态较多,会占用大量的内存资源。
  • 在某些语言或环境中,实现备忘录模式可能较为复杂,需要考虑访问权限控制等问题。

七. 总结

备忘录模式提供了一种状态恢复机制,可以在不破坏对象封装性的前提下保存和恢复对象的内部状态。虽然它可能会占用较多内存,但在需要撤销操作或事务回滚等场景中非常有用。

http://www.dtcms.com/a/481604.html

相关文章:

  • 【LeetCode】73. 矩阵置零
  • 网站开发教材男通网站哪个好用
  • 《3D草原场景技术拆解:植被物理碰撞与多系统协同的6个实战方案》
  • 软件测试—BUG篇
  • OpenAI系列模型介绍、API使用
  • 做网站的可以信吗深圳商城网站建设
  • 关于使用docker部署srs服务器的相关指令
  • 基于M序列编码的水下微弱目标检测方法
  • Ubuntu SSH 免密码登陆
  • vue前端面试题——记录一次面试当中遇到的题(8)
  • FastbuildAI后端WebModule模块注册分析
  • 南昌网站排名网站站群建设方案
  • day9 cpp:运算符重载
  • Qoder上线提示词增强功能,将开发者从 “提示词“ 的负担中解放出来
  • 「机器学习笔记15」深度学习全面解析:从MLP到LSTM的Python实战指南
  • 在ARM版MacBook上构建lldb-mi
  • php网站后台搭建html代码大全简单
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十一)MySQL数据库主从复制
  • 云手机的真实体验感怎么样
  • 广州微网站建设信息电商如何做
  • 架设一个网站腾讯网站建设推广
  • 【数据结构】:链表的核心实现与操作解析
  • 【Verilog】系统任务和编译指令
  • 辅助分类器GAN(ACGAN)
  • 交流网站建设心得体会wordpress首页固定页面
  • 专门做有机食品的网站dedecms怎么部署网站
  • 大学生个体创业的网站建设百度搭建wordpress
  • 自己公司网站维护上海动易 网站
  • 摄影网站设计企业官网用什么系统
  • 网站开发工具最适合网站建设和网络优化