个人理解:
核心是Memento类,定义了一个要保存的类的实例字段
UML类图

代码实现
class Subject
{
public string Str { get; set; }
public Memento CreateMemento()
{
return new Memento() { CurrentSubject = this };
}
public void SetMemento(Memento memento)
{
this.Str = memento.CurrentSubject.Str;
}
}
class Memento
{
public Subject CurrentSubject { get; set; }
}
class MementoContext
{
public Memento CurrentMemento { get; set; }
}
Python代码实现
class Subject(object):
state = 123
def GetMementoData(self, memento):
self.state = memento.subject.state
def UpdateMementoData(self, memento):
memento.subject = self
class Memento(object):
subject = Subject()
if __name__ == "__main__":
memento = Memento()
subject = Subject()
subject.state = 100
subject.UpdateMementoData(memento)
subject = Subject()
subject.state = 200
subject.GetMementoData(memento)
print(subject.state)'''100'''
subject = Subject()
subject.state = 300
subject.UpdateMementoData(memento)
subject = Subject()
subject.state = 400
subject = Subject()
subject.state = 500
subject.GetMementoData(memento)
print(subject.state)'''300'''
本文介绍了备忘录设计模式的核心概念及其应用场景。通过C#与Python两种语言的代码实现,展示了如何利用Memento类来保存和恢复对象的状态,特别适用于需要撤销操作或恢复到之前状态的场景。
170

被折叠的 条评论
为什么被折叠?



