这篇“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备忘录模式中的类怎么定义”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。