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

c 开发手机网站开发编程外包平台

c 开发手机网站开发,编程外包平台,新手怎么学电商运营,企业网站推广成功案例​跟多内容#xff0c;前往IT-BLOG ​ 备忘录模式#xff08;Memento Pattern#xff09;#xff1a; 保存对象的某个状态#xff0c;以便在未来需要的时候进行数据的恢复。相当容易理解#xff0c;举个简单的例子#xff1a;Word 软件在编辑时按 CtrlZ 组合键时能撤销当…​跟多内容前往IT-BLOG ​ 备忘录模式Memento Pattern 保存对象的某个状态以便在未来需要的时候进行数据的恢复。相当容易理解举个简单的例子Word 软件在编辑时按 CtrlZ 组合键时能撤销当前操作使文档恢复到之前的状态 一、备忘录模式的基本介绍 【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;//用于顺序存储 参加测试的 十名同学的成绩MapInteger, Memento mementos new HashMapInteger, 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王五, timestamp2560] 恢复第一名的成绩信息Original [name张三, timestamp2330] 恢复第三名的成绩信息Original [name王五, timestamp2560]
http://www.tj-hxxt.cn/news/134292.html

相关文章:

  • 北京好的网站建设公司做网站要用到什么
  • 网站功能需求怎么写网站域名备案变更
  • 网站内部资源推广方法找工程项目上哪个平台好呢
  • 通达oa 做网站计划网站搭建
  • 网站专题分类个人做网站要注意什么条件
  • seo网站推广专员简单个人网站开发
  • 建立带数据库的网站wordpress免费的企业主题
  • 中国网站建设网wordpress更改链接后网站打不开
  • 哈尔滨网站开发电话网站接广告平台
  • 网站绝对路径南京网站建设公司有哪些
  • 手机版微网站安徽省建设工程八大员报名网站
  • 在线网站建设工程标准个人网站免费注册
  • 手机app网站dw网页设计心得体会
  • 网站建设实施背景分析模板之家下载的模板怎么打开
  • 国外酷站收录网站公司申请网站需要哪些材料
  • 网站建设首选公司哪家好企业解决方案漫画
  • 网站开发包括软件吗wordpress删除
  • 湖南做网站 n磐石网络全自动网站建设
  • 哪个网站做推销产品北京工商注册流程
  • 外贸网站制作设计西安百度公司开户
  • 网站建设公司哪家好?该如何选择工程资质
  • 四川城乡和住房建设厅官方网站后端开发需要掌握哪些知识
  • 黔西县住房和城乡建设局网站留学网站建设方案
  • 怎样申请网站深圳竞价托管公司
  • 网站如何做suwordpress悬浮
  • 静态网站和伪静态seo企业网站前台模板
  • 网站建设高等教育出版社泉州网站建设网站
  • 网站开发设计文员网站微信支付怎么做
  • 策划方案免费网站副业做网站软件
  • 石油网站建设价格网站四对联广告代码