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

一般做网站要多少钱沈阳关键词快照优化

一般做网站要多少钱,沈阳关键词快照优化,北京微信网站开发费用,长沙定制网站开发​跟多内容,前往IT-BLOG ​ 备忘录模式(Memento Pattern): 保存对象的某个状态,以便在未来需要的时候进行数据的恢复。相当容易理解,举个简单的例子:Word 软件在编辑时按 CtrlZ 组合键时能撤销当…

​跟多内容,前往IT-BLOG

备忘录模式(Memento Pattern): 保存对象的某个状态,以便在未来需要的时候进行数据的恢复。相当容易理解,举个简单的例子:Word 软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;

一、备忘录模式的基本介绍

【1】备忘录模式(Memento Pattern): 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
【2】现实生活中备忘录是用来记录某些要去做的事情,或者是记录已经达成共同意见的事情,以防忘记。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。
【3】备忘录模式属于行为型模式。
【4】实现了信息的封装,使得用户不需要关心状态和保存细节。符合 “单一职责原则” 。
【5】为了节约内存,备忘录模式可以和原型模式配合使用。

二、备忘录模式的结构与类图

忘录模式的核心是设计备忘录类以及用于管理备忘录的管理者类,备忘录模式的主要角色如下:
【1】发起人(Originator)角色: 记录当前对象的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。
【2】备忘录(Memetor)角色: 负责存储发起人对象的内部状态,在需要的时候提供这些内部状态给发起人。
【3】管理者(Caretaker)角色: 对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改。

三、备忘录模式案例分析

我们使用备忘录模式写一个学校 100 米考试的案例:5 人一组,进行分组测试。我们需要备份的对象是,一组学生的成绩。

【1】发起人(Originator)角色: 发起人需要依赖备忘录类,对自己每次记录的成绩进行备份 createMemento 。同时需要提供一个还原方法 getOriginalFromMemento 将需要的备份类作为参数传递进来,并将结果赋值给目标类。

//100 米 测试  5人一组 ,这是个人所花费的时间,我们使用备忘录的方式实现一下。
public class Original {//姓名private String name;//时间private int timestamp;public Memento createMemento() {return new Memento(name, timestamp);}//获取目标对象  通过排名public void getOriginalFromMemento(Memento memento) {name = memento.getName();timestamp = memento.getTimestamp();}public int getTimestamp() {return timestamp;}public void setTimestamp(int timestamp) {this.timestamp = timestamp;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Original [name=" + name + ", timestamp=" + timestamp + "]";}
}

【2】备忘录(Memetor)角色: 提供一些目标对象需要备份的属性,通过构造器进行属性传递。

public class Memento {//姓名private String name;//时间private int timestamp;//构造器public Memento(String name, int timestamp) {super();this.name = name;this.timestamp = timestamp;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getTimestamp() {return timestamp;}public void setTimestamp(int timestamp) {this.timestamp = timestamp;}
}

【3】管理者(Caretaker)角色: 创建一个存储备忘录对象的集合 <Map、List、Set> 等,同时创建添加、获取、清空等方法。

public class Caretaker {//排名private int index = 1;//用于顺序存储 参加测试的 十名同学的成绩Map<Integer, Memento>  mementos = new HashMap<Integer, Memento>();//提供一个 add 方法public void add(Memento m) {mementos.put(index, m);index += 1;}//获取备份类public Memento get(int key) {return mementos.get(key);}//归位public void remove() {mementos.clear();}
}

【4】客户端(Client)角色: 首先将顺序按的前五名同学的成绩及姓名,通过集合 Map 按照名次存储。五名同学测试完成后,通过目标类的 getOriginalFromMemento 方法,根据名次获取同学的成绩,并记录在成绩花名册中。最后,清空记录下一组。

public class Client {public static void main(String[] args) {//创建 目标类Original original = new Original();//管理类Caretaker managerMemento = new Caretaker();//记录成绩recordResults(original,managerMemento);//获取第一名的成绩System.out.println("恢复前目标类的记录值"+original.toString());//从集合中获取第一名的值Memento memento1 = managerMemento.get(1);//调用目标类的还原方法original.getOriginalFromMemento(memento1);System.out.println("恢复第一名的成绩信息:"+original.toString());//从集合中获取第三名的值Memento memento3 = managerMemento.get(3);//调用目标类的还原方法original.getOriginalFromMemento(memento3);System.out.println("恢复第三名的成绩信息:"+original.toString());//清空记录下一组managerMemento.remove();}private static void recordResults(Original original,Caretaker managerMemento) {//第一名学生成绩original.setName("张三");original.setTimestamp(2330);//创建一个备份类Memento memento1 = original.createMemento();//备份类存入 管理类中managerMemento.add(memento1);//第二名学生成绩original.setName("李四");original.setTimestamp(2550);//创建一个备份类Memento memento2 = original.createMemento();//备份类存入 管理类中managerMemento.add(memento2);//第三名学生成绩original.setName("王五");original.setTimestamp(2560);//创建一个备份类Memento memento3 = original.createMemento();//备份类存入 管理类中managerMemento.add(memento3);}
}

【5】结果展示: 备份者模式思想相对简单,主要查看细节上的实现。备份类相对简单,就一个普通类。但是目标类,提供了存储原始对象和获取原始对象的方法,是备份者模式的精华所在。

恢复目标类的记录值Original [name=王五, timestamp=2560]
恢复第一名的成绩信息:Original [name=张三, timestamp=2330]
恢复第三名的成绩信息:Original [name=王五, timestamp=2560]
http://www.ds6.com.cn/news/63070.html

相关文章:

  • 前端做网站都要做哪些网站开发流程图
  • 南通网站建设苏鹏网络营销模式有哪些
  • 上海网站推广平台互联网营销的优势
  • 软装设计网站有哪些房地产网站模板
  • 珠海市律师网站建设怎么样如何创建自己的小程序
  • 做企业网站 需要用服务器吗百度旗下的所有产品
  • 我要自学网ps视频教程免费广州网站优化多少钱
  • 如何做好电商关键词优化排名用什么软件比较好
  • 刷信誉网站怎么做关键词挖掘机爱站网
  • 网站安装系统怎么安装教程视频青岛seo优化
  • wordpress建站项目怎样推广自己的app
  • 网站开发设计课程sem和seo区别与联系
  • 赣州做网站的公司有哪家长尾关键词挖掘网站
  • 做徽标的网站东莞网
  • 做网店装修的网站有哪些百度指数指的是什么
  • 网站虚拟主机费用百度seo优化公司
  • 有域名怎么建网站房地产网站建设
  • android开发环境搭建西安seo网站管理
  • 微信分享网站短链接怎么做的上海关键词排名手机优化软件
  • 深圳市公安门户网站营销型公司网站建设
  • 网站pv访问量统计怎么做今天刚刚发生的新闻
  • 免备案自助建站网站软媒win7优化大师
  • 网站开发风险分析seo销售
  • 做网站为什么要钱湖南企业seo优化首选
  • 做app 的模板下载网站有哪些内容seo指的是搜索引擎营销
  • 政府网站建设哪家好seo分析师
  • 班级网页模板html源码网站seo服务公司
  • 上海企业服务公司网络快速排名优化方法
  • 微信网站跳转链接怎么做google收录查询
  • 如何给网站做二维码互联网营销推广怎么做