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

西安机场商务宾馆百度做网站wordpress主题播放音乐不刷新

西安机场商务宾馆百度做网站,wordpress主题播放音乐不刷新,seo快速排名优化方法,天猫网站建设的理由文章目录 一、定义#xff1a;备忘录模式二、模拟场景#xff1a;备忘录模式三、改善代码#xff1a;备忘录模式3.1 工程结构3.2 备忘录模式模型结构图3.3 备忘录模式定义3.3.1 配置信息类3.3.2 备忘录类3.3.3 记录者类3.3.4 管理员类 3.4 单元测试 四、总结#xff1a;备忘… 文章目录 一、定义备忘录模式二、模拟场景备忘录模式三、改善代码备忘录模式3.1 工程结构3.2 备忘录模式模型结构图3.3 备忘录模式定义3.3.1 配置信息类3.3.2 备忘录类3.3.3 记录者类3.3.4 管理员类 3.4 单元测试 四、总结备忘录模式 一、定义备忘录模式 备忘录模式是以可以恢复或者说回滚配置、版本、悔棋为核心功能的设计模式。 这种设计模式属于行为模式。在功能实现上是以不破坏原对象为基础增加备忘录操作类记录原对象的行为从而实现备忘录模式。 备忘录模式的使用场景后悔药、IDEA 编辑和撤销、小霸王游戏机存档photoshop 等 二、模拟场景备忘录模式 模拟系统在发布上线的过程中记录线上配置文件用于紧急回滚。 在大型互联网公司系统的发布上线一定是易用、安全、可处理紧急状况的同时为了可以隔离线上和本地环境一般会把配置文件抽取出来放到线上避免有人误操作导致本地的配置内容发布出去。 同时线上的配置文件也会在每次变更的时候进行记录包括版本号、时间、MD5、内容信息和操作人。 在后续上线时如果发现紧急问题系统就会需要回滚操作如果执行回滚那么也可以设置配置文件是否回滚。 因为每一个版本的系统可能会带着一些配置文件的信息这个时候就可以很方便的让系统与配置文件一起回滚操作。 使用备忘录模式模拟如何记录配置文件信息。 三、改善代码备忘录模式 备忘录的设计模式实现重点在于不更改原有类的基础上增加备忘录类存放记录。 3.1 工程结构 design-step-18 |——src|——main|--java|--com.lino.design|--Admin.java|--ConfigFile.java|--ConfigMemento.java|--ConfigOriginator.java|--test|--java|--com.lino.design.test|--ApiTest.java3.2 备忘录模式模型结构图 以上是工程结构的一个类图其实相对来说并不复杂除了原有的配置类 ConfigFile 以外只新增加了三个类。 ConfigMemento备忘录类相当于是对原有配置类的扩展。ConfigOriginator记录者类获取和返回备忘录类对象信息。Admin管理员类用于操作记录备忘信息比如你一些列的顺序执行了什么或者某个版本下的内容信息。 3.3 备忘录模式定义 3.3.1 配置信息类 ConfigFile.java package com.lino.design;import java.util.Date;/*** description: 配置文件*/ public class ConfigFile {/*** 版本号*/private String versionNo;/*** 内容*/private String content;/*** 时间*/private Date dateTime;/*** 操作人*/private String operator;public ConfigFile(String versionNo, String content, Date dateTime, String operator) {this.versionNo versionNo;this.content content;this.dateTime dateTime;this.operator operator;}public String getVersionNo() {return versionNo;}public void setVersionNo(String versionNo) {this.versionNo versionNo;}public String getContent() {return content;}public void setContent(String content) {this.content content;}public Date getDateTime() {return dateTime;}public void setDateTime(Date dateTime) {this.dateTime dateTime;}public String getOperator() {return operator;}public void setOperator(String operator) {this.operator operator;} }配置类可以是任何形式的这里只是简单的描述一个基本的配置内容信息。 3.3.2 备忘录类 ConfigMemento.java package com.lino.design;/*** description: 备忘录*/ public class ConfigMemento {private ConfigFile configFile;public ConfigMemento(ConfigFile configFile) {this.configFile configFile;}public ConfigFile getConfigFile() {return configFile;}public void setConfigFile(ConfigFile configFile) {this.configFile configFile;} }备忘录是对原有配置类的扩展可以设置和获取配置信息。 3.3.3 记录者类 ConfigOriginator.java package com.lino.design;/*** description: 记录者*/ public class ConfigOriginator {private ConfigFile configFile;public ConfigFile getConfigFile() {return configFile;}public void setConfigFile(ConfigFile configFile) {this.configFile configFile;}public ConfigMemento saveMemento() {return new ConfigMemento(configFile);}public void getMemento(ConfigMemento configMemento) {this.configFile configMemento.getConfigFile();} }记录者类除了对 ConfigFile 配置类增加了获取和设置方法外还增加了 保存 saveMemento()、获取 getMemento(ConfigMemento configMemento)。 saveMemento()保存备忘录的时候会创建一个备忘录信息并返回回去交给管理者处理。getMemento获取之后并不是直接返回而是把备忘录的信息交给现在的配置文件 this.configFile。 3.3.4 管理员类 Admin.java package com.lino.design;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*** description: 管理员*/ public class Admin {private int cursorIdx 0;private ListConfigMemento mementoList new ArrayList();private MapString, ConfigMemento mementoMap new HashMap(16);public void append(ConfigMemento memento) {mementoList.add(memento);mementoMap.put(memento.getConfigFile().getVersionNo(), memento);cursorIdx;}public ConfigMemento undo() {if (--cursorIdx 0) {return mementoList.get(0);}return mementoList.get(cursorIdx);}public ConfigMemento redo() {if (cursorIdx mementoList.size()) {return mementoList.get(mementoList.size() - 1);}return mementoList.get(cursorIdx);}public ConfigMemento get(String versionNo) {return mementoMap.get(versionNo);} }这个类中主要实现的核心功能就是记录配置文件信息也就是备忘录的效果之后提供可以回滚和获取的方法拿到备忘录的具体内容。同时这里设置了两个数据结构来存放备忘录实际使用中可以按需设置。ListConfigMemento、MapString, ConfigMemento。最后是提供的备忘录操作方法。 存放 append()、回滚 undo()、返回 redo()、定向获取 get(String versionNo)。 3.4 单元测试 ApiTest.java package com.lino.design.test;import com.alibaba.fastjson.JSON; import com.lino.design.Admin; import com.lino.design.ConfigFile; import com.lino.design.ConfigOriginator; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Date;/*** description: 单元测试*/ public class ApiTest {private Logger logger LoggerFactory.getLogger(ApiTest.class);Testpublic void test() {Admin admin new Admin();ConfigOriginator configOriginator new ConfigOriginator();configOriginator.setConfigFile(new ConfigFile(100001, 配置内容A哈哈, new Date(), 小零哥));admin.append(configOriginator.saveMemento());configOriginator.setConfigFile(new ConfigFile(100002, 配置内容A嘻嘻, new Date(), 小零哥));admin.append(configOriginator.saveMemento());configOriginator.setConfigFile(new ConfigFile(100003, 配置内容A默默, new Date(), 小零哥));admin.append(configOriginator.saveMemento());configOriginator.setConfigFile(new ConfigFile(100004, 配置内容A嘿嘿, new Date(), 小零哥));admin.append(configOriginator.saveMemento());// 历史配置(回滚)configOriginator.getMemento(admin.undo());logger.info(历史配置(回滚)undo{}, JSON.toJSONString(configOriginator.getConfigFile()));// 历史配置(回滚)configOriginator.getMemento(admin.undo());logger.info(历史配置(回滚)undo{}, JSON.toJSONString(configOriginator.getConfigFile()));// 历史配置(前进)configOriginator.getMemento(admin.redo());logger.info(历史配置(前进)redo{}, JSON.toJSONString(configOriginator.getConfigFile()));// 历史配置(获取)configOriginator.getMemento(admin.get(100002));logger.info(历史配置(获取)get{}, JSON.toJSONString(configOriginator.getConfigFile()));} }这里包括了四次信息存储和备忘录历史配置操作。通过上面添加了四次配置后下面分别进行操作是 回滚1次再回滚1次之后向前进1次最后是获取指定的版本配置。 测试结果 17:04:48.903 [main] INFO com.lino.design.test.ApiTest - 历史配置(回滚)undo{content:配置内容A嘿嘿,dateTime:1675415088777,operator:小零哥,versionNo:100004} 17:04:48.913 [main] INFO com.lino.design.test.ApiTest - 历史配置(回滚)undo{content:配置内容A默默,dateTime:1675415088777,operator:小零哥,versionNo:100003} 17:04:48.913 [main] INFO com.lino.design.test.ApiTest - 历史配置(前进)redo{content:配置内容A嘿嘿,dateTime:1675415088777,operator:小零哥,versionNo:100004} 17:04:48.913 [main] INFO com.lino.design.test.ApiTest - 历史配置(获取)get{content:配置内容A嘻嘻,dateTime:1675415088777,operator:小零哥,versionNo:100002}从测试结果效果上可以看到历史配置按照我们的指令进行了回滚和前进以及最终通过指定的版本进行获取符合预期结果。 四、总结备忘录模式 备忘录模式可以满足在不破坏原有属性类的基础上扩充了备忘录的功能。在以上的实现中我们将配置模拟存放到内存中如果关机了会导致配置信息丢失因为在一些真实的场景里还是需要存放到数据中。 此种存放到内存中进行回复的场景也不是没有比如Photoshop、运营人员操作 ERP 配置活动。也就是即时性的一般不需要存放到库中进行恢复。另外如果是使用内存方式存放备忘录需要考虑存储问题避免造成内存大量消耗。
http://www.pierceye.com/news/720012/

相关文章:

  • 网站建设案例基本流程图咨询公司名字大全
  • 成功的电子商务网站设计律师推广网站排名
  • 东莞桥头网站建设合肥商城网站建设
  • 做网站的准备什么合肥制作网页设计
  • 医院门户网站建设规划柳州建设厅官方网站
  • 公司建网站怎么建做网站的公司都很小吗
  • 手机cms建站系统重庆怎么站seo
  • 益阳建设局网站网站 设计 趋势
  • 奉贤网站建设网站制作金融企业如何做好网络推广
  • 范湖网站建设团队建设银行激活网站
  • 旅游网站开发网站设计报告书邢台旅游景点大全排名 免费
  • 如何创建div做网站推荐佛山伦教网站设计
  • 建设电子商务网站前的市场分析网站后台ftp
  • 华丽的网站模板律所网站建设
  • 网站 管理系统搜索关键词的方法
  • 网站桥页也叫设计班级网站建设
  • 安庆网站建设工作室方维网络科技有限公司
  • 手机网站开发利用流程做网盟行业网站的图片广告的销售
  • 厦门建公司网站怎样自做网站
  • 兰州市网站建设公司无锡上海网站建设
  • 轻骑铃木摩托车官网资源专业网站优化排名
  • 做电影网站赚钱吗中企网站建设
  • 罗源网站建设免费建网站 步骤
  • 哪些网站做简历合适wordpress校园
  • 网站子目录怎么做国内做的比较好的二手网站
  • 短链生成网站html模板免费十个网页
  • 图跃企业网站建设seo提供服务
  • 厦门市建设管理协会网站发帖效果好的网站
  • 手机商城网站制作网页设计与制作的岗位职责
  • 教学网站系统流程图wordpress激活主题