备忘录模式是可以恢复或者说回滚、配置、版本、悔棋为核心功能的设计模式,而这种设计模式属于行为模式。在功能实现上是以不破坏原对象为基础增加备忘录操作类,记录原对象的行为从而实现备忘录模式。
备忘录的设计实现方式,重点在于不更改原有类的基础上,增加备忘录存放记录。
备忘录允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。
备忘录模式将创建状态快照的工作委派给实际状态的拥有者原发器对象,这样其他对象就不再需要从“外部”复制编辑器状态,编辑器类拥有其状态的完全访问权,可自行生成快照。建议将对象状态的副本存储在一个名为备忘录的特殊对象中,除了创建备忘录的对象外,任何对象都不能访问备忘录的内容,其他对象必须使用受限接口与备忘录进行交互,它们可以获取快照的元数据,但不能获取快照中原始对象的状态。
基于嵌套类的实现
1、原发器
可以生成自身状态的快照,也可在需要时通过快照恢复自身的状态。
2、备忘录
原发器状态快照的值对象。通常做法是将备忘录设为不可变的,并通过构造函数一次性传递数据。
3、负责人
仅知道“何时”和“为何”捕捉原发器的状态,以及何时恢复状态。
4、实现类
备忘录类将被嵌套在原发器中,这样原发器就可访问备忘录的成员变量和方法,即使这些方法被声明为私有。另一方面,负责人对于备忘录的成员变量和方法的访问权限非常有限。它们只能在栈中保存备忘录,而不能修改其状态。
此模式允许你复制对象中的全部状态,并将其独立于对象进行保存。
备忘录让对象自行负责创建其状态的快照。任何其他对象都不能读取快照,有效的保障了数据的安全性。
优点
缺点
备忘录不会影像它所处理的对象的内部结构,也不会影响快照中保存的数据。
人生短暂,我不想去追求自己看不见的,我只想抓住我能看的见的。
原创不易,给个关注。
我是阿辉,感谢您的阅读,如果对你有帮助,麻烦关注、点赞、转发 谢谢。