打字猴:1.70047066e+09
1700470660 //追女孩失败,恢复原状
1700470661
1700470662 boy.restoreMemento(caretaker.getMemento());
1700470663
1700470664 System.out.println(”\n=====男孩恢复后的状态======”);
1700470665
1700470666 System.out.println(boy.getState());
1700470667
1700470668 }
1700470669
1700470670 }
1700470671
1700470672 注意 看黑体部分,就修改了这么多,看看程序的逻辑是不是清晰了很多,需要备份的时候就创建一个备份,然后丢给备忘录管理者进行管理,要取的时候再从管理者手中拿到这个备份。这个备份者就类似于一个备份的仓库管理员,创建一个丢进去,需要的时候再拿出来。这就是备忘录模式。
1700470673
1700470674
1700470675
1700470676
1700470677 设计模式之禅 [:1700454032]
1700470678 设计模式之禅 24.2 备忘录模式的定义
1700470679
1700470680 备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的世界中真实可行,其定义如下:
1700470681
1700470682 Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later.(在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。)
1700470683
1700470684 通俗地说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法,其通用类图如图24-4所示。
1700470685
1700470686
1700470687
1700470688
1700470689 图24-4 备忘录模式的通用类图
1700470690
1700470691 我们来看看类图中的三个角色。
1700470692
1700470693 ❑Originator发起人角色
1700470694
1700470695 记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
1700470696
1700470697 ❑Memento备忘录角色
1700470698
1700470699 负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
1700470700
1700470701 ❑Caretaker备忘录管理员角色
1700470702
1700470703 对备忘录进行管理、保存和提供备忘录。
1700470704
1700470705 备忘录模式的通用代码也非常简单,我们先看发起人角色,如代码清单24-8所示。
1700470706
1700470707 代码清单24-8 发起人角色
1700470708
1700470709 public class Originator{
[ 上一页 ]  [ :1.70047066e+09 ]  [ 下一页 ]