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文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0