1.备忘录模式的定义与特点
备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。
我的理解:备忘录模式就是后悔药。它将对象原先的属性记录下来,等到“后悔”的时候就可以回到原来的状态。当然有了备忘录,还要有一个使用备忘录的人,那么还需要一个管理者(CareTaker)。
eg.游戏角色有攻击力和防御力,大战时攻击力和防御力都会大减,战斗之后,攻击力和防御力会恢复原来的值,那么只要在大战前记录下该角色的攻击力和防御力,大战后就能原样恢复了。
该角色关于备忘录有两个方法:
2.备忘录模式的结构
备忘录模式的主要角色如下:
发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。
备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。
管理者(Caretaker)角色:对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改。
备忘录模式的注意事项和细节
- 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态
- 实现了信息的封装,使得用户不需要关心状态的保存细节
- 如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存, 这个需要注意
- 适用的应用场景:1、后悔药。2、打游戏时的存档。3、Windows 里的 ctri + z。
4、IE 中的后退。 4、数据库的事务管理
尚硅谷-图解Java设计模式(韩顺平)
备忘录模式(详解版)
如有错误,欢迎指正