备忘录模式是一种对象行为模式,它提供了一种状态恢复的机制。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。 ,,备忘录模式有三个角色:原发器(Originator)、备忘录(Memento)和继承者(Caretaker)。原发器是当前使用的对象,只不过在这个对象中有提供两个特殊方法(拍下当前对象的快照并返回,其次就是将某一个历史快照进行恢复)。备忘录是在原发器外部维护的一个存储系统,用于保存原发器的状态信息。继承者则是负责从备忘录中恢复原发器状态的对象。
备忘录模式(Memento Pattern)是一种行为型设计模式,它允许你在不破坏封装性的前提下,记录对象的内部状态,并能在以后的时间点将其恢复到之前保存的状态,这种模式的主要应用场景是在处理一些需要撤销和重做操作的场景,例如文本编辑器、图形编辑器等。
备忘录模式的核心组件包括三个部分:发起人(Originator)、备忘录(Memento)和监听者(Caretaker)。
1、发起人(Originator):负责创建备忘录对象,以及执行撤销和重做操作,发起人需要维护一个内部状态,以便在执行操作时能够记录当前状态。
2、备忘录(Memento):用于存储发起人的状态,备忘录是一个独立的类,它可以将发起人的内部状态序列化,以便在以后的时间点进行恢复,备忘录需要实现一个接口,该接口定义了如何从内部状态中恢复对象的方法。
3、监听者(Caretaker):负责管理备忘录对象,当备忘录对象不再需要时,监听者可以将其存储起来,以便后续使用,监听者还需要提供一个方法,用于获取当前存储的所有备忘录对象。
备忘录模式的工作流程如下:
1、发起人创建一个新的备忘录对象,并将当前状态保存到该对象中。
2、发起人执行某个操作,例如修改状态、添加数据等。
3、如果操作成功,则将新的状态保存到另一个备忘录对象中;如果操作失败,则抛出异常。
4、当需要撤销操作时,发起人可以从最近的备忘录对象中恢复状态,如果有多个备忘录对象,则可以选择其中任意一个进行恢复;如果没有备忘录对象,则无法撤销操作。
5、当需要重做操作时,发起人可以从上一次撤销操作后的备忘录对象开始,继续执行相同的操作,如果没有上一次撤销操作的备忘录对象,则无法重做操作。
通过使用备忘录模式,我们可以在不破坏封装性的前提下,实现对对象状态的记录和恢复,这种模式使得发起人可以自由地执行各种操作,而不用担心这些操作会对系统的状态造成破坏,监听者也可以在必要时对备忘录对象进行管理,以确保系统的稳定性和可靠性。