备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。[1]
备忘录模式(Memento Pattern)应用于保存和跟踪对象的状态,以便于必要的时候可以把对象恢复到以前的状态。备忘录模式可以为一个对象提供状态存储和状态恢复的手段。 一个备忘录是一个对象,这个对象保持了一些状态信息。
备忘录模可以在不暴露对象的内部结构的情况下完成把对象恢复到以前的状态功能。需要获取以前状态的对象是发起者(Originator)。当客户需要保存发起者的状态时,客户需要发起者的当前状态。发起者保存它所有的状态属性到一个独立的对象,这个对象就是备忘录(Memento),把备忘录(Memento)对象返回给客户, 通过负责人角色(Caretaker)将备忘录(Memento)对象保存起来。备忘录(Memento)对象可以看作在给定的时间点包含另一个对象内部状态的对象。备忘录(Memento)对象必须向除了发起者以外的所有对象隐藏发起者变量的值。当发起者允许备忘录(Memento)对象访问它的内部状态时,备忘录(Memento)对象应该被设计为对其他对象采取访问限制的对象。[2]
当客户需要把发起者的状态恢复到以前的状态时,它通过负责人角色(Caretaker)把备忘录(Memento)对象返回给发起者。发起者使用包含在备忘录(Memento)对象中的状态信息,恢复自己到备忘录(Memento)对象中保存的状态。[2]
在实际应用中, 我们希望能够执行一个取消操作,从而使系统状态回到先前的状态。比如, 通过单基击“Undo”按钮,确定何时获取并保存应用程序的状态信息,以及如果把应用程序恢复到保存前的状态。我们就可以使用备忘录模式.































































































































































[1] http://blog.youkuaiyun.com/matchcolor/archive/2006/09/29/1307911.aspx
[2] http://www.chinavalue.net/wiki/showcontent.aspx?titleid=19748