iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python设计模式中的备忘录模式
  • 861
分享到

Python设计模式中的备忘录模式

2024-04-02 19:04:59 861人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录备忘录模式应用场景代码示例总结备忘录模式 备忘录模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 简单来

备忘录模式

备忘录模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

简单来说,就是在运行过程中我们可以记录某个状态,当遇到错误时恢复当前状态,这在业务流程中是用设计来处理异常情况。

优点

  • 有时一些发起人对象的内部信息必须保存在发起人对象以外的地方,但是必须要由发起人对象自己读取。这时,使用备忘录模式可以把复杂的发起人内部信息对其他的对象屏蔽起来,从而可以恰当地保持封装的边界。
  • 本模式简化了发起人。发起人不再需要管理和保存其内部状态的一个个版本,客户端可以自行管理他们所需要的这些状态的版本。
  • 当发起人角色的状态改变的时候,有可能这个状态无效,这时候就可以使用暂时存储起来的备忘录将状态复原。

缺点

  • 如果发起人角色的状态需要完整地存储到备忘录对象中,那么在资源消耗上面备忘录对象会很昂贵。
  • 当负责人角色将一个备忘录存储起来的时候,负责人可能并不知道这个状态会占用多大的存储空间,从而无法提醒用户一个操作是否很昂贵。
  • 当发起人角色的状态改变的时候,有可能这个协议无效。如果状态改变的成功率不高的话,不如采取“假如”协议模式。

应用场景

 

在这里插入图片描述

实体角色:

Originator(发起人):负责创建一个 Memento(备忘录),用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator 可以根据需要决定 Memento 存储自己的哪些内部状态。

Memento(备忘录):负责存储 Originator 对象的内部状态,并可以防止 Originator 以外的其他对象访问备忘录。备忘录有两个接口:

1.Caretaker 只能看到备忘录的窄接口,他只能将备忘录传递给其他对象。

2.Originator 却可看到备忘录的宽接口,允许它访问返回到先前状态所需要的所有数据。

Caretaker(管理者):负责 Memento,不能对 Memento 的内容进行访问或者操作。

代码示例

class AddNumber:
    def __init__(self):
        self.start = 1
    def add(self, number):
        self.start += number
        print(self.start)

class Memento:
    """备忘录"""
    def backups(self, obj=None):
        """
        设置备份方法
        :param obj: 
        :return: 
        """
        self.obj_dict = copy.deepcopy(obj.__dict__)
        print("备份数据:{}".fORMat(self.obj_dict))
    def recovery(self, obj):
        """
        恢复备份方法
        :param obj: 
        :return: 
        """
        obj.__dict__.clear()
        obj.__dict__.update(self.obj_dict)
        return obj

if __name__ == '__main__':
    test = AddNumber()
    memento = Memento()
    for i in [1, 2, 3, 'n', 4]:
        if i == 2:
            memento.backups(test)
        try:
            test.add(i)
        except TypeError as e:
            print(e)
            print(test.start)
    memento.recovery(test)
    print(test.start)

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! 

--结束END--

本文标题: Python设计模式中的备忘录模式

本文链接: https://www.lsjlt.com/news/139225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python设计模式中的备忘录模式
    目录备忘录模式应用场景代码示例总结备忘录模式 备忘录模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 简单来...
    99+
    2022-11-13
  • Java设计模式之备忘录模式
    无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,也提供撤...
    99+
    2022-11-13
    Java 设计模式 备忘录模式
  • Java设计模式之java备忘录模式详解
    目录引言备忘录模式(Memento Pattern)角色为什么会出现守护者对象(负责人)?备忘录模式实现框架下棋案例备忘录模式总结优点缺点适用场景注意细节参考文章总结引言 备忘录模式...
    99+
    2022-11-12
  • 行为型设计模式 - 备忘录模式详解
    |0基本介绍备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态2|0模式结构Originator(发起者):记录当前的状态,负责创...
    99+
    2023-06-04
  • 深入理解Java设计模式之备忘录模式
    目录一、什么是备忘录模式二、备忘录模式的结构三、备忘录模式的使用场景四、备忘录模式的优缺点五、备忘录模式的实现总结一、什么是备忘录模式 定义:在不破坏封闭的前提下,捕获一个对象的内部...
    99+
    2022-11-12
  • Java设计模式初识之备忘录模式详解
    目录简介典型实现总结优点缺点适用场景源码简介 备忘录设计模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于实现防丢失、撤销、恢复等功能。...
    99+
    2022-11-13
    Java 设计模式 备忘录模式 Java 备忘录模式 Java 设计模式
  • .Net行为型设计模式之备忘录模式(Memento)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、备忘录模式的代码实现六、备忘录模式的实现要点:1、备忘录模式的主要优点有:2...
    99+
    2022-11-13
  • 怎样深入理解Java设计模式的备忘录模式
    本篇文章为大家展示了怎样深入理解Java设计模式的备忘录模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、什么是备忘录模式定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这...
    99+
    2023-06-25
  • JAVA设计模式之备忘录模式原理与用法详解
    本文实例讲述了JAVA设计模式之备忘录模式。分享给大家供大家参考,具体如下:备忘录模式:又叫做快照模式,指在不破坏封装性的前提下,获取到一个对象的内部状态,并在对象之外记录或保存这个状态。在有需要的时候可将该对象恢复到原先保存的状态。我们相...
    99+
    2023-05-31
    java 设计模式 备忘录模式
  • .Net行为型设计模式之备忘录模式怎么实现
    这篇文章主要讲解了“.Net行为型设计模式之备忘录模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net行为型设计模式之备忘录模式怎么实现”吧!一、动机(Motivate)我们看...
    99+
    2023-06-30
  • Java设计模式之备忘录模式_动力节点Java学院
    定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图:        我们在编程的时候...
    99+
    2023-05-31
    备忘录模式 java 设计模式
  • C#备忘录人生存档的设计模式实例
    目录C#备忘录设计模式游戏背景游戏实现角色类角色基类玩家类怪兽类游戏类游戏操作类客户端加上存档需要存档的数据存档定义备忘录模式出场空接口私有嵌套存档类创建存档和从存档恢复存档管理器类...
    99+
    2022-11-13
  • Python的备忘录模式怎么应用
    这篇文章主要介绍“Python的备忘录模式怎么应用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python的备忘录模式怎么应用”文章能帮助大家解决问题。备忘录模式备忘录模式,在不破坏封闭的前提下,...
    99+
    2023-06-29
  • Java设计模式之备忘录模式实现对象状态的保存和恢复
    目录介绍实现备忘录类发起人类管理者类测试总结优点缺点应用场景介绍 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏封装性的前提下,捕获并保存一个对象的...
    99+
    2023-05-17
    Java设计模式 Java备忘录模式
  • Java备忘录模式是怎样的
    本篇内容介绍了“Java备忘录模式是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义与结构   备忘录(Memento)模式又称标记...
    99+
    2023-06-03
  • Python 设计模式中命令模式
    目录1.命令模式2.应用场景3.代码示例1.命令模式 命令模式的目的是解耦调用操作的对象(调用者)和提供实现的对象(接收者)。 命令模式的思路是在调用者和接收者之间插入一个命令类(C...
    99+
    2022-11-13
  • PHP中的备忘录模式是干什么的
    本篇内容主要讲解“PHP中的备忘录模式是干什么的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP中的备忘录模式是干什么的”吧!备忘录,这个名字其实就已经很形象的解释了它的作用。典型的例子就是...
    99+
    2023-06-20
  • 【python 设计模式】单例模式
    单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器程序的配置信息存放在一个文件中...
    99+
    2023-01-31
    模式 python
  • Python设计模式——单例模式
    一、单例模式理论单例模式:    保证某一个类只有一个实例,而且在全局只有一个访问点优点:    1、由于单例模式要求在全局内只有一个实例,因而可以节省比较多的内存空间    2、全局只有一个接入点,可以更好地进行数据同步控制,避免多重占用...
    99+
    2023-01-31
    模式 Python
  • python设计模式
    参考网址:https://yq.aliyun.com/articles/280715utm_content=m_36549...
    99+
    2023-01-31
    模式 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作