python 设计模式-备忘录模式

mac2022-06-30  14

备忘录模式主要用来做对象状态回退处理的,例如我们最常见的WORD里的撤销操作。

示例代码如下:

#!/usr/bin/env python #coding: utf-8 class Memento: def __init__(self, state): self._state = state @property def state(self): return self._state class Originator: @property def state(self): return self._state @state.setter def state(self, val): self._state = val def saveToMemento(self): return Memento(self._state) def getStateFromMemento(memento): return memento.state class CareTaker(list): pass if __name__ == '__main__': orig = Originator() ct = CareTaker() orig.state = 1 ct.append(orig.saveToMemento()) orig.state = 2 ct.append(orig.saveToMemento()) orig.state = 3 ct.append(orig.saveToMemento()) orig.state = 4 ct.append(orig.saveToMemento()) for c in ct[::-1]: print(c.state) orig.state = c.state

输出:

4 3 2 1
最新回复(0)