news 2026/4/23 20:45:43

Python设计模式:备忘录模式详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python设计模式:备忘录模式详解

更多内容请见: 《Python3案例和总结》 - 专栏介绍和目录

文章目录

    • 一、备忘录模式概述
      • 1.1 什么是备忘录模式?
      • 1.2 解决的问题:状态的安全隔离与恢复
      • 1.3 备忘录模式的结构与角色
      • 1.4 备忘录模式的优缺点
      • 1.5 应用场景
    • 二、 Python代码实现:一个简单的文本编辑器
      • 2.1 步骤1:定义备忘录 和原发器
      • 2.2 步骤2:定义管理者
      • 2.3 步骤3:客户端调用
      • 2.4 执行结果
    • 三、 深入探讨:备忘录的两种实现方式
      • 3.1 深拷贝(Deep Copy)方式
      • 3.2 自定义备忘录类(窄接口)方式

一、备忘录模式概述

1.1 什么是备忘录模式?

备忘录模式属于行为型设计模式,其核心思想是:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

想象一下你正在玩一款角色扮演游戏。在挑战一个艰难的地下城之前,你会在存档点保存游戏。这个“存档”就是备忘录。它记录了你角色当前的所有信息:等级、生命值、装备、任务进度等。如果在挑战中失败了,你可以选择“读取存档”,角色的一切都将恢复到保存时的状态。在这个过程中,游戏系统(原发器)负责创建存档,存档本身(备忘录)只负责存储数据,而你(管理者/负责人)决定何时保存和何时读取。

1.2 解决的问题:状态的安全隔离与恢复

备忘录模式主要解决两个关键问题:

  1. 保持封装边界:对象的内部状态通常是私有的,不应该暴露给外部对象。备忘录模式通过创建一个独立的“备忘录”对象来存储状态,这个备忘录通常是一个窄接口或私有类,只有原发器才能访问其完整内容,从而保证了状态信息的安全性和封装性。
  2. 提供状态回滚机制:它为用户提供了一种简单、安全的撤销或重做机制。系统可以随时创建当前状态的快照,并在需要时将对象恢复到任何一个历史快照。

1.3 备忘录模式的结构与角色

备忘录模式通常包含以下三个核心角色:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:31:56

重磅干货!谷歌500页电子书,彻底讲透AI Agent设计模式,一篇就够!

文章摘要 谷歌资深工程师Antonio Gulli发布近500页技术指南,详述21种代理设计模式,帮助构建自主AI系统。涵盖从提示链到多代理协作的实用框架,适用于企业环境。已成亚马逊概率统计类新书榜首。 文末阅读原文或下面链接加入知识星球获取500页…

作者头像 李华
网站建设 2026/4/23 14:06:39

Wan2.2-T2V-A14B如何确保医学解剖结构的准确性?

Wan2.2-T2V-A14B如何确保医学解剖结构的准确性? 在数字医疗飞速发展的今天,我们正见证一场从“看图说话”到“说即所见”的革命。想象一下:一位医学生面对复杂的腹腔血管分布图时不再皱眉,而是轻声说出一句:“展示腹腔…

作者头像 李华
网站建设 2026/4/23 14:07:22

为什么90%的量子计算项目都缺这个VSCode扩展?真相曝光

第一章:量子模拟器的 VSCode 扩展开发 Visual Studio Code(VSCode)作为现代开发者广泛使用的代码编辑器,其强大的扩展生态系统为特定领域工具的集成提供了便利。在量子计算领域,构建一个支持量子算法编写、语法高亮、电…

作者头像 李华
网站建设 2026/4/23 17:21:28

46、虚拟操作系统安装与配置全攻略

虚拟操作系统安装与配置全攻略 在当今的技术领域,虚拟操作系统的应用越来越广泛。无论是进行实验、开发还是学习,虚拟环境都提供了一个便捷且安全的方式。本文将详细介绍在 VirtualBox 中安装 Fedora 13 以及在 VMware 中安装 Windows 7 的具体步骤和相关配置。 在 Virtual…

作者头像 李华
网站建设 2026/4/23 18:39:16

【大数据毕设选题】基于Hadoop的豆瓣电影用户行为分析系统源码,Python+Spark完整实现方案 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡有什么问题可以…

作者头像 李华