大话设计模式18:备忘录模式
目录
大话设计模式:18.备忘录模式
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态
TL;DR:通过外部的类将类的状态存储起来,配合记录和读取的方法,封装存取细节
1.优点
- 将复杂对象的内部信息对其他的对象屏蔽起来
- 当对象的状态改变时,如果状态无效,可以使用暂存的备忘录将状态恢复
2.实现细节
- Originator:负责创建备忘录,用以记录当前时刻的内部状态,并可使用备忘录恢复内部状态
- Memento:负责存储 Originator 对象的内部状态,并防止 Originator 以外的对象访问被备忘录
- Caretaker:负责保存备忘录,不能对备忘录内容进行操作或检查
3.使用场景
- 适用于功能比较复杂的,但需要维护或者记录属性历史的类
- 或者需要保存的属性只是众多属性中的一小部分,无需用相同的实例保存,而又不想使用 Clone 的方式保存,以避免对上层应用开放 Originator 的接口