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

太原做网站公司运营专注于网站营销服务

太原做网站公司运营,专注于网站营销服务,上海科技网站设计建设,个人做网站赚钱么Java 备忘录模式(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/wzjs/132279.html

相关文章:

  • 公司网站建设gghhhj长沙关键词优化费用
  • 做商城网站系统近三年成功的营销案例
  • visual studio 2010 网站开发重庆seo网站建设
  • 江苏SEO网站建设网络营销成功的案例
  • 科技服务网站建设内容seo站长常用工具
  • 精品在线开发网站建设网络公司品牌推广
  • 做网站体会漯河seo推广
  • 渭南做网站的公司qq群推广引流免费网站
  • 建德 网站seo内容优化
  • 宁波建网站哪家值得信赖百度关键词怎么优化
  • 可做产品预售的网站谷歌关键词推广怎么做
  • php网站后台密码怎么修改制作网站大概多少钱
  • 承德北京网站建设百度人工客服在线咨询电话
  • 陕西企业网站建设哪家好查询网站信息
  • 政府网站模板html网络营销成功的原因
  • 莆田seo全网营销广州网站优化平台
  • 灵台教育局网站师资队伍建设免费广告制作软件
  • 网站性能优化怎么做石家庄邮电职业技术学院
  • 网站备案掉了什么原因企业网络推广方法
  • 做网站用上面软件写代码比较好关键词挖掘长尾词
  • 求html码源网站seo发包排名软件
  • 青岛城阳网站制作怎样建立自己网站
  • 郑州网站优化外包杭州seo的优化
  • 网站新闻置顶怎么做最近一周新闻大事
  • 网站制作销售术语百度一下你就知道原版
  • php网站开发教材百度搜索竞价
  • 兰州网站建设百度账户安全中心
  • 有专门做序列图的网站seo综合排名优化
  • 门户网站建设 总结站长之家域名查询鹿少女
  • 网站开发表格汕头网站排名优化