Python备忘录模式

备忘录模式,类似于撤销功能,提供保存并恢复之前状态的功能。

class Momento(object):
    def __init__(self):
        super().__init__()
        self.dct = {}

    def set_status(self, dct):
        self.dct = {}
        for key in dct:
            if not key.startswith('_'):
                self.dct[key] = dct[key]

    def get_status(self):
        return self.dct


class Obj(object):
    def __init__(self, a):
        super().__init__()
        self.attribute_a = a

        self._momento = Momento()

    def set_a(self, status):
        self.backup_current_status()
        self.attribute_a = status

    def restore_previous_status(self):
        self.__dict__.update(self._momento.get_status())

    def backup_current_status(self):
        self._momento.set_status(self.__dict__)

    def __str__(self):
        return "attribute_a: " + self.attribute_a + '\n'


def main():
    obj = Obj('a')
    obj.set_a('aa')
    print('current_status:\n', obj)
    obj.restore_previous_status()
    print('previous_status:\n', obj)


if __name__ == '__main__':
    main()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 场景问题# 1.1 开发仿真系统## 考虑这样一个仿真应用,功能是:模拟运行针对某个具体问题的多个解决方案,记...
    七寸知架构阅读 6,511评论 1 50
  • 定义 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象...
    步积阅读 8,130评论 0 2
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,404评论 1 15
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,355评论 3 14
  • #咱们相爱吧#开篇点题,这部剧,是琅琊榜之后,找了好久,又一部值得看的电视剧。这次在家休假,就陪着老妈看这个电视剧...
    Lady封阅读 2,600评论 0 0

友情链接更多精彩内容