当前位置: 首页 > news >正文

汕头响应式网站教程陕西营销型网站制作

汕头响应式网站教程,陕西营销型网站制作,室内设计效果图用什么软件最好,情侣主题 wordpressJava 备忘录模式(Memento Pattern)详解 🧠 什么是备忘录模式? 备忘录模式是一种行为型设计模式,它允许在不暴露对象实现细节的情况下,保存和恢复对象的状态。备忘录模式常常用于需要记录对象状态以便随时…

Java 备忘录模式(Memento Pattern)详解

🧠 什么是备忘录模式?

备忘录模式是一种行为型设计模式,它允许在不暴露对象实现细节的情况下,保存和恢复对象的状态。备忘录模式常常用于需要记录对象状态以便随时恢复的场景,如实现撤销操作、版本控制等。


🎯 使用场景

  • 需要保存对象的状态,以便以后恢复
  • 支持对象的撤销功能
  • 对象的状态改变需要被保存,且不希望暴露给外部

🏗️ 模式结构

  • Memento(备忘录):存储对象的内部状态,可以将状态保存在对象中
  • Originator(发起人):创建备忘录,保存当前的内部状态,并可以恢复到先前保存的状态
  • Caretaker(看护者):负责保存备忘录,但不能修改备忘录的内容,仅能调用恢复功能

✅ 示例:编辑器撤销操作

备忘录类

public class Memento {private String state;public Memento(String state) {this.state = state;}public String getState() {return state;}
}

发起人类

public class Editor {private String content;public void setContent(String content) {this.content = content;}public String getContent() {return content;}public Memento saveState() {return new Memento(content);}public void restoreState(Memento memento) {this.content = memento.getState();}
}

看护者类

import java.util.ArrayList;
import java.util.List;public class Caretaker {private List<Memento> mementoList = new ArrayList<>();public void addMemento(Memento memento) {mementoList.add(memento);}public Memento getMemento(int index) {return mementoList.get(index);}
}

客户端

public class Client {public static void main(String[] args) {Editor editor = new Editor();Caretaker caretaker = new Caretaker();editor.setContent("Hello");caretaker.addMemento(editor.saveState());  // 保存当前状态editor.setContent("Hello, World!");caretaker.addMemento(editor.saveState());  // 保存新状态System.out.println("Current Content: " + editor.getContent());  // 输出:Hello, World!editor.restoreState(caretaker.getMemento(0));  // 恢复到旧状态System.out.println("Restored Content: " + editor.getContent());  // 输出:Hello}
}

✅ 优点

  • 可以保存和恢复对象的状态,支持撤销操作
  • 发起人对象不需要暴露其内部实现细节
  • 备忘录对象是只读的,不可以修改,有助于封装状态

⚠️ 缺点

  • 如果备忘录保存了过多的状态,可能会占用大量内存
  • 增加了类的数量,导致系统复杂度增加

🧩 使用建议

备忘录模式适合需要记录对象状态并支持恢复功能的场景,如文本编辑器的撤销操作、游戏的存档功能等。

http://www.dtcms.com/a/471203.html

相关文章:

  • 第9章:两条道路的风景:技术与管理的真实世界(2)
  • Spring Boot 3零基础教程,Demo小结,笔记04
  • 建网站公司用什么网站程序网络用户提要求找人帮忙做的网站
  • 了解HART 转 Modbus 转换器
  • 【图像处理基石】计算机视觉技术在安防监控领域的应用调研与实践总结
  • 自己怎么个人网站安徽六安发现一例新冠阳性检测者
  • 青岛网站seo收费标准丹阳市住房和城乡建设局网站
  • 做浏览单的网站有哪些wordpress 树形插件
  • 达梦数据库TDE透明加密解决方案:构建高安全数据存储体系
  • 低版本Chrome导致弹框无法滚动的解决方案
  • 网站地图怎么提交做相片软件网站
  • 广州找工作哪个网站好WordPress功能模块排版
  • 设计网站做多大合适制作网页的图片
  • 信阳网站网站建设学校网站制作价格
  • 基于单片机的智能水瓶温度控制系统
  • 惠阳有做公司网站的吗适合个人开店的外贸平台
  • FPGA学习篇——Verilog学习之分频器的实现
  • 网站建设的风格设置做网站招商需要具备什么
  • 网站中如何做图片轮播nodejs可以做网站么
  • 坑梓网站建设怎么样聊城网站建设品牌
  • Redis CPU以及带宽瓶颈分析
  • tauri项目编译的时候,最后一步的时候内存溢出了?
  • 做跳转链接到自己的网站传奇霸业官网下载
  • 国外网站开发技术外贸网站源码下载
  • 【Go】--strings包
  • 【AI课程上线了哦,打造类FastGPT产品】
  • 织梦网站修改幻灯片怎么看公司网站建设的时间
  • 陕西省住房城乡建设厅网站管理中心wordpress5导航图标
  • Adobe Analytics 实践指南:提升营销效果
  • 网站后台卸载cmsdede一 网站建设方案