Linux学习|Gentoo/Arch/FreeBSDLinux读书笔记

大话设计模式读书笔记-18备忘录模式

2020-04-14  本文已影响0人  QuietHeart
bigtalk.jpg

第18章 如果再回到从前——备忘录模式

概念

在不破坏对象封装性的前提下,捕获一个对象的内部状态并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态(比如游戏存进度)。

实现

包括:

其实,Caretaker和Originator是客户端看到的部分,而Memento是Caretaker中的一个成员(可以简单将Caretaker理解为Memento集合,里面包含多个需要保存恢复的备忘录)。

备忘录模式类图:

img

备忘录模式使用:

img

场景

适用场合:功能复杂需要维护或记录历史属性的类,比如有些工具中的撤销、还原,游戏中的存进度等。

注意,对象的状态必须对应的对象才能读取,不要破坏封装性(即,备忘录内的数据不能直接查询和修改。而比如创建对象副本的话,还要一个一个复制成员实现恢复,对象副本又能被修改这就破坏了封装性),除非想共享一些属性,比如敌人的血量等等。备忘录有些时候在磁盘中,有些时候在内存中。

总之是在对象外部保存存储,由对象读取恢复。

上一篇 下一篇

猜你喜欢

热点阅读