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

北京做网站公司排名浩森宇特做挂件的网站

北京做网站公司排名浩森宇特,做挂件的网站,头像字体图片制作,保定seo网络推广在日常开发中,我们经常会遇到这样的场景:需要保存对象的某个历史状态,以便将来恢复。这种需求最常见的例子就是“撤销操作”。在这种情况下,备忘录模式(Memento Pattern)就派上了用场。 目录 1. 概念 2. 代码实现 3. 总结 1. …

        在日常开发中,我们经常会遇到这样的场景:需要保存对象的某个历史状态,以便将来恢复。这种需求最常见的例子就是“撤销操作”。在这种情况下,备忘录模式(Memento Pattern)就派上了用场。

目录

1. 概念

2. 代码实现

3. 总结


1. 概念

        备忘录模式属于行为型设计模式。它的核心思想是:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态。

        通俗点讲,备忘录模式就像是在玩游戏时存档:你保存了一个状态,之后可以随时“读档”回来。

备忘录模式包含三个关键角色:

1. Originator(发起人):需要保存状态的对象

2. Memento(备忘录):用来存储对象的内部状态

3. Caretaker(管理者):负责保存备忘录,但不会操作或检查其内容

2. 代码实现

        这里我将采用一个编辑/撤销文本的案例来实现备忘录模式。

首先我准备一个Editor类

public class Editor {private String text;public void setText(String text) {this.text = text;}public String getText() {return text;}// 保存当前状态public Memento save() {return new Memento(text);}// 恢复状态public void restore(Memento memento) {this.text = memento.getText();}// 内部备忘录类public static class Memento {private final String text;private Memento(String text) {this.text = text;}private String getText() {return text;}}
}

这里我定义了一个静态内部类即Memento类,主要作为一个备忘录,也是被记录的状态类。

接下来再定义管理者,负责管理备忘录:

import java.util.Stack;public class History {private final Stack<Editor.Memento> history = new Stack<>();public void push(Editor.Memento memento) {history.push(memento);}public Editor.Memento pop() {if (!history.isEmpty()) {return history.pop();}return null;}
}

这里我们这个管理类也基于栈来实现,其后进先出的特性可以很好的实现我们需要的写入撤销的业务逻辑。

最后完成一个主测试类:

public class MementoDemo {public static void main(String[] args) {Editor editor = new Editor();History history = new History();editor.setText("Version 1");history.push(editor.save());editor.setText("Version 2");history.push(editor.save());editor.setText("Version 3");System.out.println("当前内容: " + editor.getText()); // 输出 Version 3editor.restore(history.pop());System.out.println("撤销后: " + editor.getText()); // 输出 Version 2editor.restore(history.pop());System.out.println("再次撤销: " + editor.getText()); // 输出 Version 1}
}

3. 总结

        备忘录模式的封装良好,但其实在实际工作中用到的地方并没有很多,绝大多数的游戏服务器实现存档的功能类似备忘录模式,但是对于后端服务器业务开发过程中,此设计模式的实践并不是很多,大家可以作为了解即可。


文章转载自:

http://af0YZrbF.dfygx.cn
http://e8yqQFap.dfygx.cn
http://3987Ep0e.dfygx.cn
http://1nt6OmTV.dfygx.cn
http://UcdSGqJz.dfygx.cn
http://XkMgHCgQ.dfygx.cn
http://OtZMBj7K.dfygx.cn
http://J5wdLZoS.dfygx.cn
http://2E1zRz7x.dfygx.cn
http://1ftz474z.dfygx.cn
http://zYBWW6GU.dfygx.cn
http://XKlRfPf4.dfygx.cn
http://nyXzjdF5.dfygx.cn
http://C6aw3Gsk.dfygx.cn
http://HshiDPu4.dfygx.cn
http://jHHmrEOg.dfygx.cn
http://nByYM4jw.dfygx.cn
http://UxtDyJHD.dfygx.cn
http://6YdXuYMp.dfygx.cn
http://koIdCqoe.dfygx.cn
http://3ZP0Jzi5.dfygx.cn
http://tApoIKPP.dfygx.cn
http://zgR6waTv.dfygx.cn
http://Edbbn0vt.dfygx.cn
http://0QoLpvpT.dfygx.cn
http://Nh49ivl9.dfygx.cn
http://uSH4fjRT.dfygx.cn
http://4g7yocBE.dfygx.cn
http://dCL9JKEn.dfygx.cn
http://H21wMm1S.dfygx.cn
http://www.dtcms.com/wzjs/653698.html

相关文章:

  • 海丰县建设局官方网站芜湖今天刚刚发生的新闻
  • 高级网站建设费用专门做瑜伽的网站
  • 深圳 学习网站公司官网备案流程
  • 人人开发网站网站设计就业培训学校排名
  • 中国太平保险集团官方网站外贸网站什么采集
  • 域名访问过程会不会影响网站访问模版网站
  • 做跨境电商网站有哪些做网站柳州
  • chci网站建设wordpress可视化编辑教程
  • 镇江网站设计wordpress获取链接
  • 北京移动端网站价格免费游戏不用登录直接玩
  • 企业网站建设服务好沈阳建站模板系统
  • 怎样做网站域名舞蹈培训机构网站建设
  • 360网站运营手机网站焦点图代码
  • 北京网站定制制作莱芜论坛24小时主题贴
  • 招聘网站html模板个人网站制作模板
  • wordpress搭建视频站工厂电商具体是做什么的
  • 如何给网站做引流北京开公司需要什么条件
  • 广州国外建站模板企业网站托管排版设计制作
  • 网站开发三层结构徐州网红有哪些人
  • 企业网站策划书模板范文wordpress 分类 评论
  • 母版做双语网站最近韩国免费观看视频
  • 网站开发的图片要求怎样免费建立个人网站
  • 高安建站公司济南行知网站制作
  • 浙江网站建设排名网站流量 名词
  • 邯郸做wap网站费用手机网址2021年免费不封
  • 企业组织网站建设方案湖南省城乡和住房建设厅官网
  • 域名注册查询官网瑞安网站建设优化
  • 网站后台logo拼多多推广关键词首选帝搜软件
  • 泰州网站制作价格php网站开发技术环境要求
  • 做网站多少钱PageAdmin推广公司游戏