2023-02-22  阅读(24)
原文作者:键盘林 原文地址:https://blog.csdn.net/qq_37909508/category_8976362.html

备忘录模式

定义:保存一个对象的某个状态,以便在适当的时候恢复对象

类型:行为型

适用场景:

保存及恢复数据相关业务场景

后悔的时候,即想恢复到之前的状态

优点:

为用户提供一种可恢复机制

存档信息的封装

缺点:

资源占用

相关设计模式:

备忘录模式和状态模式

Coding:

业务场景:在网站上发布手记,然后模拟“Allt+Z”操作回退

创建Article类

202302222109360791.png

将上面的三个属性保存到ArticleMemonto类中

202302222109377972.png

202302222109399723.png

回退操作,给当前的Article,就相当于执行“alt”+“z”的操作一样

202302222109412234.png

下面就是toString方法

202302222109429515.png

创建ArticleMemento类

202302222109444876.png

对于articlememento来说它不需要set方法

202302222109455727.png

ArticleMementoManager类

202302222109468708.png

通过stack作为容器存放ArticleMemento类

202302222109483049.png

拿到一个出栈一个

2023022221094968510.png

创建一个就入栈一个

2023022221095098811.png

当前的UML类图

2023022221095222112.png

创建Test类

2023022221095342113.png

第一行直接new一个articleMementoManager

2023022221095479314.png

第二行直接new一个Article类,传入三个参数

2023022221095590815.png

调用article的saveToMemento方法(将三个参数保存到了ArticleMemento当中)

2023022221095720516.png

将返回回来的ArticleMemento保存到ArticleMemenToManager中

2023022221095828817.png

打印存储的信息

2023022221095953518.png

重新修改手记

2023022221100073619.png

打印,又push手记ArticleMemento到ArticleMemenToManager的stack栈中

2023022221100194420.png

再次进行修改

2023022221100309221.png

当前article的参数属性

2023022221100429722.png

上面操作设置之后没有存入,这时候回退

2023022221100506923.png

执行完上面的操作之后

2023022221100655824.png

在执行完下面三步

2023022221100723725.png

我们发现stack栈中没有数据了

2023022221100849026.png

article里面也已经是“A”数据了

2023022221100919927.png

Spring中的应用

引入jar包

2023022221100993528.png

类StateManageableMessageContext中

2023022221101084829.png

2023022221101287930.png


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文