Memento(备忘录)模式

  1. 特点:玩过PC大型单机游戏的人,应该都知道有一个存档功能,可以记录游戏进度,如果有难点需要反复练习通关的地方,使用这个功能就很方便。
    电脑系统中也有一个功能叫备份(macOS里面有time machine),如果电脑系统做过备份,之后使用过程中如果出现问题可以使用这个功能快速恢复。
    Memento模式就是用来实现存档备份类似的功能,可以在程序的关键点对程序数据状态进行备份,如果程序中途出现错误可以快速恢复数据,然后尝试重新运行。
  2. 角色
角色名称 角色职责
Originator(生成者) 定义创建和恢复Memento角色的相关接口
Memento(纪念品) 用于存储Originator角色状态数据,此角色有两种接口:宽接口:用于外部获取数据集合的接口,也可以认为是Memento角色本身;窄接口:用于获取Memento角色的内部有限的信息接口。
Caretaker(负责人) 对Originator的状态进行管理,比如何时进行备份和恢复,同时访问Memento角色也只能通过宽接口或窄接口进行访问。

宽接口与窄接口主要是通过语言的访问权限控制的,以下是Java中访问权限分类,这两种接口的设计实际上在所有设计模式中都有所体现。
1. public:所有类都可以访问。
2. protected:同一个包中的类或该类的子类才可以访问。
3. 无:同一个包中的类可以访问。
4. private:只有该类自身可以访问。

  1. 角色关系

    Memento.png

  2. 代码示例:Memento

以上文献参考:《图解设计模式》

你可能感兴趣的:(Memento(备忘录)模式)