图解设计模式读书笔记(十五)——Memento(备忘录)模式
使用场景:
需要保存状态,以便将来执行redo/undo操作来恢复状态。多用在棋牌类游戏,书写编辑类应用上。
基本思想:
在保证封装性的基础上,将类的属性状态在外部保存起来。
保证封装性的方式起始就是控制好memento类的可见性,即对于敏感数据,不使用public修饰,一般不用修饰符修饰,使得只能在同一个包中类能够访问。
类关系图:
类图比较简单,Originator负责生产Memento,与Memento在同一个包中,能够访问Memento除了private外的所有方法属性。Caretaker通过Originator生成并持有Memento对象,以便在某个时刻恢复memento状态。
缺点:
由于需要备份,特别是多次备份时,资源消耗严重。