首页 > 财经旅游 > 正文

java设计模式之备忘录模式

2019-08-18 13:27:58   来源:东方头条   评论:0

备忘录模式真的是很一个比较实用的设计模式,比如说日志恢复、断点重传等等。提供的就是一种“后悔药的机制”。让我们记录下来程序运行过程中的各种状态,还能够恢复。

一、认识备忘录模式

在这里我们以在电脑上下棋为例,通过备忘录模式能够记录下来所走的每一步棋,当突然断点的时候,还能够恢复到某一步,就是这样一个功能。其实备忘录模式的思想就是这样。我们从专业的角度来对其进行一个理解。备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。

对于我们用户来说,就算是保存的日志被删了,也不会影响我们正常的功能。我们把上面的例子画一个类图描述一下。

这个图已经很清晰了,里面主要涉及到三个角色:

(1)Originator:负责创建一个备忘录,就好比是例子中的棋盘。

(2)Mement:备忘录角色,用于存储Originator的内部状态,并且可以防止Originator以外的对象访问Memento,就好比是例子中的电脑日志。

(3)Caretaker: 负责存储备忘录,就好比例子中的电脑。

整个流程逻辑我们捋一遍:电脑把棋盘中的每一步棋保存在日志中。现在三个角色的作用应该就能明白了。

二、代码实现

第一步:新建一个备忘录Step,保存棋盘的每一步棋

第二步:Originator新建棋盘

第三步:Caretaker创建电脑

第四步:模拟一下整个过程

我们可以看一下结果输出。

我们可以看到输出了之前的状态。这就是备忘录模式,程序运行的每一步都会记录保存下来,在数据库里面经常会用到,而且mysql数据库中的回滚机制就是使用了他的思想。

三、分析备忘录模式

优点

(1)提供了一种恢复机制可以是你回复到你保留地任何状态。

(2)对信息封装,即使保存的状态信息丢失了,也不会对程序的正常运行有影响。

缺点

每一次记录的时候都会消耗系统资源,影响系统效率。

不过备忘录模式使用的场景极其广泛,可以说每一个大型软件都会用到这种模式。

  责任编辑:

今日推荐

习近平在第五届中国国际进口博览会开幕式上发表致辞

11月4日晚,国家主席习近平以视频方式出席在上海举行的第五届中国国际进口博览会开幕式并发表题为《共创开放繁荣的美好未来》的致辞。新华社记者 李学仁 摄[详细]

中国共产党第二十次全国代表大会闭幕会在京举行

10月22日,中国共产党第二十次全国代表大会闭幕会在北京人民大会堂举行。新华社记者 陈建力 摄[详细]

天天学习|中南海月刊(2022.09)

天天学习金色九月,喜迎丰收。9月,一个个瞬间令人难忘:主持中央深改委会议决定健全关键核心技术攻关新型举国体制;出席中央军委晋升上将军衔仪式颁发命令状;新冠肺炎疫情发生以来首次出访...[详细]