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

农业网站建设模板下载网络营销公司热线电话

农业网站建设模板下载,网络营销公司热线电话,外包接活平台,湖南微网站开发一、什么是备忘录模式 来到备忘录模式了,这个模式我感觉相对简单一些,就是备份,或者快照。跟前面一样为了加深理解,我们引入一个电影情结来说明啥是备忘录模式,以来加深大家对备忘录模式的认识。那么,在电影…

一、什么是备忘录模式

        来到备忘录模式了,这个模式我感觉相对简单一些,就是备份,或者快照。跟前面一样为了加深理解,我们引入一个电影情结来说明啥是备忘录模式,以来加深大家对备忘录模式的认识。那么,在电影中谁是此模式应用的王者呢。我想起一位,不知道大家有没有看过一个极其经典的电影,星爷的《大话西游》。在电影《大话西游》中,至尊宝利用月光宝盒不断穿越到紫霞仙子自杀前的时间段,试图改变结局。这种时间穿越和状态恢复的机制也可以类比为备忘录模式。

        至尊宝:“般若波罗蜜~~~~~~~~~”

        二当家:“哇,又升仙啦!咦?为什么要说‘又’?”

        至尊宝通过月光宝盒(管理者)回到过去,每次穿越都会恢复到之前保存的状态(备忘录),从而尝试改变故事的走向。备忘录模式(Memento Pattern) 是一种行为型设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。

二、为什么使用备忘录模式

        那么我们拿《月光宝盒》来说一下为啥要使用备忘录模式

1. 需要保存对象的历史状态:如文本编辑器中的撤销、恢复功能。在《大话西游》中,至尊宝通过月光宝盒保存了多个历史状态,每次回到过去都是对这些历史状态的恢复。

2. 需要在程序运行时回滚对象状态:如游戏中存储和恢复玩家进度。在电影中,至尊宝利用月光宝盒不断回到过去,每次回到过去都是对之前状态的回滚。

3. 希望避免暴露对象的实现细节:通过备忘录隐藏对象的内部状态。在电影中,月光宝盒作为备忘录,保存了至尊宝的状态,而至尊宝自己和观众都无法直接访问这些状态,只能通过月光宝盒进行恢复。

        备忘录模式通过在不破坏封装性的前提下,捕获并保存对象的内部状态,使得对象可以在需要时恢复到之前的状态。这种模式特别适用于需要撤销操作、历史记录功能或状态恢复的场景。在电影《大话西游》中,至尊宝利用月光宝盒不断回到过去,试图改变结局,这种机制很好地体现了备忘录模式的核心思想。

三、备忘录模式示例

1. 定义备忘录接口(Memento)(定义了备忘录的行为
public interface Memento {// 备忘录接口,用于保存和恢复状态
}
2. 实现具体备忘录类(ConcreteMemento)(月光宝盒
  • 月光宝盒:用于存储至尊宝的内部状态,通常是一个简单的数据类。月光宝盒对至尊宝以外的其他对象是不可变的。

public class TimeMemento implements Memento {private String state;public TimeMemento(String state) {this.state = state;}public String getState() {return state;}
}
3. 定义发起人(Originator)(至尊宝(孙悟空)
  • 至尊宝(孙悟空):负责创建备忘录对象,记录当前时刻的内部状态。至尊宝通过月光宝盒保存和恢复自己的状态
public class BrocadeHorse {private String state;public void setState(String state) {this.state = state;System.out.println("至尊宝的状态已更新为: " + state);}public String getState() {return state;}public Memento saveStateToMemento() {// 保存当前状态到备忘录return new TimeMemento(state);}public void getStateFromMemento(Memento memento) {// 从备忘录恢复状态setState(((TimeMemento) memento).getState());}
}
4. 定义管理者类(Caretaker)(猪八戒(二当家)
  • 猪八戒(二当家):负责保存和管理备忘录,但不能直接操作备忘录的内容。猪八戒通过月光宝盒帮助至尊宝恢复状态。

public class MoonlightBox {private Memento memento;public void saveState(BrocadeHorse horse) {// 保存状态memento = horse.saveStateToMemento();System.out.println("月光宝盒保存了至尊宝的状态。");}public void restoreState(BrocadeHorse horse) {// 恢复状态horse.getStateFromMemento(memento);System.out.println("月光宝盒恢复了至尊宝的状态。");}
}
5. 场景重现
public class Main {public static void main(String[] args) {// 创建至尊宝对象BrocadeHorse brocadeHorse = new BrocadeHorse();// 创建月光宝盒对象MoonlightBox moonlightBox = new MoonlightBox();// 至尊宝的状态变化brocadeHorse.setState("初次见到紫霞仙子");// 保存状态moonlightBox.saveState(brocadeHorse);// 至尊宝的状态变化brocadeHorse.setState("紫霞仙子自杀");// 恢复状态moonlightBox.restoreState(brocadeHorse);// 至尊宝的状态变化brocadeHorse.setState("再次尝试拯救紫霞仙子");// 保存状态moonlightBox.saveState(brocadeHorse);// 恢复状态moonlightBox.restoreState(brocadeHorse);}
}//日志输出
至尊宝的状态已更新为: 初次见到紫霞仙子
月光宝盒保存了至尊宝的状态。
至尊宝的状态已更新为: 紫霞仙子自杀
月光宝盒恢复了至尊宝的状态。
至尊宝的状态已更新为: 再次尝试拯救紫霞仙子
月光宝盒保存了至尊宝的状态。
月光宝盒恢复了至尊宝的状态。

http://www.tj-hxxt.cn/news/13191.html

相关文章:

  • dede网站301怎么做线上推广营销
  • 网站中如何做图片轮播百度快照推广是什么意思
  • 高端+旅游+网站建设广州短视频代运营
  • 跨境电商什么产品最火百度seo快排软件
  • 营销方案格式魔贝课凡seo课程好吗
  • 网上建设网站一键建站免费
  • 做网站1万多十大最靠谱it培训机构
  • 南昌淘宝网站制作公司做seo需要投入的成本
  • p2p网站的建设济南seo快速霸屏
  • 毕节网站建设与对策分析在线推广企业网站的方法
  • 龙岗区教育局seo发帖网站
  • 专业网站建设在哪里太原seo建站
  • 做网站的怎么认证微博今日国内新闻最新消息10条新闻
  • 做电影网站哪个系统好市场营销专业就业方向
  • wordpress 基于 网店seo搜索引擎优化技术
  • 个人主页界面网站新河seo怎么做整站排名
  • 福建网站建设推广推广优化网站
  • 搜狐最大的门户网站深圳推广公司介绍
  • 一个域名一个主机可以做两个网站吗app运营需要做哪些
  • 做网站需要每年都交钱吗百度统计官网
  • 网站播放功能难做吗南京seo代理
  • 龙岩建设局网站推广一款app的营销方案
  • 直接做的黄页视频网站网站首页排名seo搜索优化
  • 武汉城建相关搜索优化软件
  • 车网站模板预览线上购买链接
  • 自动添加内部链接的wordpress插件北海seo快速排名
  • 中国农村建设网站首页百度关键词查询工具免费
  • 昆山做网站优化四大营销策略
  • 网站内容更新慢原因网页浏览器
  • 平度做网站促销活动推广方案