备忘录模式(Memento): 在不破坏封闭的前提下, 捕获一个对象的内部状态, 并在该对象之外保存这个状态. 这样以后就可将该对象恢复到原先保存的状态.
备忘者模式优点:
- 发起人备份状态不需要自己管理, 可以备份到外部, 这样可以很好的保持封装的边界, 这样做的意义在于可以给外部提供一个简单的操作该对象内部状态的接口. 保持封装的边界这应该算是最重要的优点了
- 发起人状态的备份与恢复, 发起人自身不需要管理与操作, 而是由客户端自学按需处理
- 发起人的状态出现问题可以很轻松的恢复
缺点:
- 如果全部备份发起人的状态, 或者其中有占有内存较大的属性(比如一个长的数组), 则会让备忘录模式的使用代价昂贵
- 由于备份的信息是由发起人自己提供的, 所以管理者无法预知备份的信息的大小, 所有可能会有一个操作很消耗资源
- 当发起人的状态改变的时候, 有可能这个状态无效. 如果状态改变的成功率不高的话, 可以采取假如的协议模式, 但是一旦成功率高, 这么做会增加系统的复杂度, 但是这是小事情
- 最大的缺点就是: 备份的可能所占的资源比较庞大