-
特点:玩过PC大型单机游戏的人,应该都知道有一个存档功能,可以记录游戏进度,如果有难点需要反复练习通关的地方,使用这个功能就很方便。
电脑系统中也有一个功能叫备份(macOS里面有time machine),如果电脑系统做过备份,之后使用过程中如果出现问题可以使用这个功能快速恢复。
Memento模式就是用来实现存档、备份类似的功能,可以在程序的关键点对程序数据状态进行备份,如果程序中途出现错误可以快速恢复数据,然后尝试重新运行。 - 角色:
角色名称 | 角色职责 |
---|---|
Originator(生成者) | 定义创建和恢复Memento角色的相关接口 |
Memento(纪念品) | 用于存储Originator角色状态数据,此角色有两种接口:宽接口:用于外部获取数据集合的接口,也可以认为是Memento角色本身;窄接口:用于获取Memento角色的内部有限的信息接口。 |
Caretaker(负责人) | 对Originator的状态进行管理,比如何时进行备份和恢复,同时访问Memento角色也只能通过宽接口或窄接口进行访问。 |
宽接口与窄接口主要是通过语言的访问权限控制的,以下是Java中访问权限分类,这两种接口的设计实际上在所有设计模式中都有所体现。
1. public:所有类都可以访问。
2. protected:同一个包中的类或该类的子类才可以访问。
3. 无:同一个包中的类可以访问。
4. private:只有该类自身可以访问。
-
角色关系:
代码示例:Memento
以上文献参考:《图解设计模式》