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

沈阳高端网页湖南网站seo推广

沈阳高端网页,湖南网站seo推广,c2c平台的盈利模式有哪些,做网站服务器要用多大备忘录设计模式 🚩什么是备忘录设计模式?🚩备忘录设计模式的特点🚩备忘录设计模式的结构🚩备忘录设计模式的优缺点🚩备忘录设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

备忘录设计模式

  • 🚩什么是备忘录设计模式?
  • 🚩备忘录设计模式的特点
  • 🚩备忘录设计模式的结构
  • 🚩备忘录设计模式的优缺点
  • 🚩备忘录设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是备忘录设计模式?

备忘录设计模式(Memento Pattern) 是一种 行为型设计模式,用于在不破坏对象封装性的前提下,捕获对象的内部状态,并在未来的某个时间点恢复到该状态。该模式可以帮助我们实现 撤销(Undo) 操作,常用于文本编辑器、事务管理等场景。

使用场景

  • 需要 保存和恢复对象的状态,比如 撤销/重做 功能

  • 需要 防止外部对象直接访问对象的私有状态,保持封装性

  • 需要 在历史记录中存储对象的多个状态,支持回溯

🚩备忘录设计模式的特点

  • 封装性:对象的状态被存储在备忘录中,避免外部访问

  • 状态恢复:允许对象恢复到之前的状态,支持回溯操作

  • 简化历史记录管理:可以存储多个历史状态,支持撤销、重做等功能

  • 解耦设计:原发器(Originator)与管理者(Caretaker)解耦,原发器只负责创建和恢复状态,管理者负责存储

🚩备忘录设计模式的结构

备忘录模式主要包含以下部分:

  • Originator(原发器):负责创建备忘录(Memento)并存储当前状态,支持从备忘录恢复状态

  • Memento(备忘录):存储原发器的状态,并提供恢复该状态的方法

  • Caretaker(管理者):负责存储多个备忘录对象,可以提供回溯功能

🚩备忘录设计模式的优缺点

✅ 优点

  • 封装性好,外部对象无法直接访问对象的状态

  • 支持撤销和重做功能,适用于编辑器、事务管理等场景

  • 解耦原发器和管理者,增强了代码的可维护性

❌ 缺点

  • 内存消耗大,如果存储大量状态,可能会影响系统性能

  • 状态存储复杂,如果对象的状态较大,存储和恢复的成本较高

🚩备忘录设计模式的Java实现

代码地址:GitHub

  • 创建 Memento(备忘录) 类
/*** @author hanson* @description: 备忘录* @date 2025-03-25 22:57:26* @version: 1.0*/
public class Memento {// 备忘录private String state;public Memento(String state) {this.state = state;}public String getState() {return state;}
}
  • 创建Originator(原发器)
/*** @author hanson* @description: 原发器* @date 2025-03-25 22:56:35* @version: 1.0*/
public class Originator {// 原发器private String state;public void setState(String state) {this.state = state;}public String getState() {return state;}public Memento createMemento() {return new Memento(state);}public void setMemento(Memento memento) {state = memento.getState();}
}
  • 创建Caretaker(管理者)
/*** @author hanson* @description: 管理者* @date 2025-03-25 22:58:35* @version: 1.0*/
public class Caretaker {// 管理者private List<Memento> mementoList = new ArrayList<>();public void addMemento(Memento state) {mementoList.add(state);}public Memento getMemento(int index) {// 判断参数是否合法if (index >= 1 && index <= mementoList.size()) {return mementoList.get(index - 1);}return null;}public void showMemento() {int cnt = 1;// for (遍历对象类型 对象名 : 遍历对象)for (Memento memento : mementoList) {System.out.println("第" + cnt + "次备份,状态为:" + memento.getState());cnt++;}}
}
  • 测试备忘录模式
/*** @author hanso* @description: 测试备忘录模式* @date 2025-03-25 23:00:25* @version: 1.0*/
public class MementoPattern {public static void main(String[] args) {Caretaker caretaker = new Caretaker();Originator originator = new Originator();originator.setState("1024");Memento backup1 = originator.createMemento();caretaker.addMemento(backup1);originator.setState("2048");Memento backup2 = originator.createMemento();caretaker.addMemento(backup2);originator.setState("4096");Memento backup3 = originator.createMemento();caretaker.addMemento(backup3);System.out.println(originator.getState());caretaker.showMemento();Memento memento1 = caretaker.getMemento(2);originator.setMemento(memento1);System.out.println("根据第2次备份还原之后的状态为:" + originator.getState());}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • Originator(原发器):负责创建备忘录,并存储和恢复状态

  • Memento(备忘录):存储状态,不对外暴露内部信息

  • Caretaker(管理者):管理多个备忘录对象,提供状态回溯功能

  • 支持多次状态存储与回溯,可用于撤销/重做功能

🚩总结

  • 备忘录设计模式 适用于 状态恢复撤销/重做 等场景

  • 解耦设计,原发器与管理者独立,避免外部访问对象状态

  • 支持历史记录管理,但需要注意 内存消耗问题

  • 广泛应用 于 文本编辑器事务管理游戏存档

✅ Java源码中的应用场景:

  1. 数据库事务管理:

    • 事务回滚(Rollback)

    • 事务日志(Transaction Log)

  2. Spring 事务管理(TransactionManager):

    • 通过事务日志(Transaction Log)来支持回滚

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

http://www.dtcms.com/wzjs/326896.html

相关文章:

  • 网站建设项目明细表网站优化策划书
  • 怎么写网站建设维护推广合同百度竞价排名榜
  • 西安建设工程交易中心网站谷歌google浏览器
  • 南宁做网站比较好的公司有哪些免费建设个人网站
  • 男男做暧暧视频网站百度搜索引擎官网入口
  • c 做网站教程自己的网站怎么建立
  • 朋友圈网站广告怎么做网站设计规划
  • 做网站用什么框架最方便产品软文代写
  • 90设计网站官网首页开发一个app需要多少钱?
  • 工业设计官网seo网站推广案例
  • seo服务商排名霸榜seo
  • 定州网站制作公司做网站怎么做
  • 网站开发使用框架原因网上推广app
  • 织梦网站关闭手机版新东方厨师学费价目表
  • 个人网站建设方案模板营销自动化
  • 全球疫情实时动态数据seo查询爱站
  • 深圳网站制作公司建设西安百度seo推广
  • 摄影 网站 源码品牌整合营销案例
  • 企业网站建设的提案百度关键词搜索排名查询
  • 凌河锦州网站建设百度指数对比
  • 深圳网站建设深圳网络关键词优化公司排名
  • 大型网站建设兴田德润优惠免费宣传平台
  • 上海市网站建设加盟免费发广告网站
  • 手机网站按那个尺寸做如何用手机创建网站
  • wordpress卡在 wp精准的搜索引擎优化
  • wordpress 小组插件seo网站怎么优化
  • 深圳网页制作十大公司谷歌seo培训
  • 长安微网站建设国内seo服务商
  • 更改网站的布局长沙seo运营
  • 网站后台如何更新想在百度上推广怎么做