189 8069 5689

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备忘录模式中的类怎么定义”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。


网站名称:web备忘录模式中的类怎么定义
URL标题:http://cdxtjz.cn/article/ggjijg.html

其他资讯