设计模式之备忘录模式
1. 定义
在不暴露对象实现细节的情况下保存和恢复对象之前的状态
2. 口语化表述
在一些单机游戏中,往往存在“存档”这个概念
所谓存档,就是保存当前的游戏状态,备份游戏档案
可以继续玩这个游戏,如果发生了什么问题,想要回退游戏状态,就可以重新加载档案
这就是备忘录模式,这个模式主要解决的就是状态“备份”与“回退”问题
(下面的表述会沿用这个场景)
3. 源码示例
在Android中,备忘录模式通常用于保存和恢复Activity的状态
Activity是一个非常重要的组件,它通常包含用户输入、UI状态和其他重要数据
当Activity被系统销毁并重新创建时,它的状态会丢失,这会对用户体验产生负面影响
为了解决这个问题,Android提供了一种保存Activity状态的机制——保存实例状态(SaveInstanceState)
保存实例状态允许在Activity被销毁时保存其状态,以便在Activity重新创建时恢复状态
它基于备忘录模式实现,系统会自动为Activity创建一个Bundle对象,并在Activity被销毁时将该Bundle对象保存起来
当Activity重新创建时,系统会将保存的Bundle对象传递给Activity,并允许Activity从中恢复其状态
4. 总结
4.1 设计优缺点
-
在不破坏对象封装情况的前提下创建对象状态快照
-
消耗大量内存
4.2 适用场景
- 需要创建对象状态快照来恢复其之前的状态时