web备忘录模式中的类怎么定义
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇"web备忘录模式中的类怎么定义"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"w
千家信息网最后更新 2025年01月31日web备忘录模式中的类怎么定义
这篇"web备忘录模式中的类怎么定义"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"web备忘录模式中的类怎么定义"文章吧。
示例代码
由于Python语言不会检查类型信息,所以不需要定义明确的备忘录类。示例代码的说明从原发器开始,详细内容如下:
class Originator: def __init__(self): self.a= 0 self.b= 0 self.c= 0 defprint(self): print('a=', self.a, ',b=', self.b,',c=', self.c) def set_memento(self, m): self.__dict__ = m def create_memento(self): returncopy.copy(self.__dict__)
在示例代码中我们定义了一个包含了三个数据成员的原发器类,它有一个print方法用于输出对象的状态。另外就是生成备忘录的create_memento方法和恢复备忘录的set_memento方法。
用于生成备忘录的create_memento方法则是生成了类成员字典的拷贝并返回,而用于恢复备忘录的set_memento方法只是简单地用备忘录数据替换了自己的成员字典。需要补充一点,create_memento必须取得拷贝是因为只有这样才能保证每次得到的都是对象状态的备份。接下来是测试代码:
if __name__ == "__main__": c = [] o = Originator() o.print() c.append(o.create_memento()) o.a = 1 o.print() c.append(o.create_memento()) o.b = 2 o.print() c.append(o.create_memento()) o.c = 3 o.print() print('start undo') o.print() while len(c): o.set_memento(c.pop()) o.print()
创建原发器对象之后,分别修改三个数据成员的值。在每次修改之前都会取得备忘录并保存在列表中,这个列表的作用就相当于责任者类。三次操作之后,再从列表中按照和存入时相反的顺序取出备忘录并交给原发器恢复其状态。执行结果如下:
a= 0 ,b= 0 ,c= 0a= 1 ,b= 0 ,c= 0a= 1 ,b= 2 ,c= 0a= 1 ,b= 2 ,c= 3start undoa= 1 ,b= 2 ,c= 3a= 1 ,b= 2 ,c= 0a= 1 ,b= 0 ,c= 0a= 0 ,b= 0 ,c= 0
可以看到,通过备忘录中保存的数据将原发器完美地恢复到操作之前的状态。
以上就是关于"web备忘录模式中的类怎么定义"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
备忘录
备忘
内容
方法
原发
代码
成员
数据
状态
模式
对象
示例
生成
三个
字典
就是
拷贝
文章
知识
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术学院风连衣裙搭配
数据库循环的基本结构
数据库和redis事务冲突
黎明杀机哪个服务器人最多
网络如何炒股软件开发
万方数据库能看见被谁引用吗
河南服务器机房定制价格
小米云服务器解析失败
福清协成网络技术有限公司
京东网络技术支持
如何知道自家网络服务器是什么
怎么安装好的数据库
怀旧服服务器配置参数
教育网ntp服务器
vs读取数据库
健康医疗领域网络安全市场
网络安全交流会议
株洲java软件开发学校排名
关于小学生网络安全手抄报内容
软件开发必须会的知识
sql数据库字段加载文件
高斯数据库
杭州未来科技城除了互联网还有啥
家里架设服务器安全
数据库视图可以定义新的基本表
美团网络安全比赛
常州移动软件开发
广州市鼎邦科技互联网有限公司
新型网络技术对生活的影响
鹏达科技网络技术