news 2026/10/28 5:19:35

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/10/28 13:38:01

Solidity函数修改器中包含return的执行顺序

关键概念 在 Solidity 中,如果在修改器中执行 return,会立即终止当前函数的执行,不会执行目标函数体,但会执行修改器中 _; 之后的代码。 执行顺序详解 基本执行流程 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract ModifierReturn {uint256 public …

作者头像 李华
网站建设 2026/10/28 6:07:00

Node.js C++ Addons:FFI 与 N-API 的性能与兼容性对比

欢迎来到本次关于Node.js C Addons的深入探讨。在Node.js生态系统中,JavaScript以其单线程、事件驱动的非阻塞I/O模型而闻名,非常适合处理高并发的网络应用。然而,当面临计算密集型任务(如图像处理、密码学、科学计算)…

作者头像 李华
网站建设 2026/10/28 6:07:01

小学生学C++编程 (变量精讲)

一、🎉✨《C 变量王国大冒险》✨🎉1、🏰 什么是变量?——“贴着名字的小盒子”想象你来到一个神奇的王国——变量王国! 这里有很多很多小盒子,每个盒子上都贴着一个名字,比如:age&am…

作者头像 李华
网站建设 2026/10/27 17:50:54

MYSQL-存储引擎

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也被称为表类型。MySQL的存储引擎是数据库的底层核心组件,它决定了数据如何存储、如何索引、是否支持事务以及如何实现并发…

作者头像 李华
网站建设 2026/10/27 19:08:40

132页RAG实践手册:构建知识库和问答系统的实战指南

在人工智能技术日新月异的今天,越来越多的人希望能够拥有属于自己的智能助手,提升工作效率、优化知识管理,甚至打造个人品牌。《RAG Handbook》正是为此而生。 本书将系统性地介绍如何从零开始,基于RAG(Retrieval‑Aug…

作者头像 李华