Memento 备忘录模式

Memento 备忘录模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

1.2. 自我理解

当你需要让对象返回之前的状态时(例如,你的用户请求“撤销”),就是用备忘录模式。
备忘录模式有两个目标:
1、存储系统关键对象的重要状态。
2、维护关键对象的封装。
优点:
1、将被存储的状态放在外面,不要和关键对象混在一起,这可以帮助维护内聚。
2、保持关键对象的数据封装。
3、提供了容易实现的恢复能力。

缺点:
1、存储和恢复状态的过程可能相当耗时。
2、消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。

1.3. 备忘录模式的组成

Memento:包含了要被恢复的对象的状态。
Originator:创建并在 Memento 对象中存储状态。
Caretaker:负责从 Memento 中恢复对象的状态。

2. UML

3. Example

3.1. 场景

游戏通关,中间存档功能,闯关失败,还可以从存档中恢复。

3.2. 代码实现

4. 参考资料

https://www.runoob.com/design-pattern/memento-pattern.html

原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]

本文链接地址: http://www.loserzhao.com/java/designpattern/memento-designpattern.html

文章的脚注信息由WordPress的wp-posturl插件自动生成

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

使用新浪微博登陆