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

重庆网站建设哪家公司好国外网站建站

重庆网站建设哪家公司好,国外网站建站,网站加盟城市分站,网络营销总结及体会记忆模式是行为设计模式之一 。 当我们要保存对象的状态以便以后可以恢复时#xff0c;可以使用Memento设计模式。 记忆模式用于以这种方式实现该目的#xff0c;即在对象外部无法访问该对象的已保存状态数据#xff0c;从而保护了已保存状态数据的完整性。 Memento模式通过… 记忆模式是行为设计模式之一 。 当我们要保存对象的状态以便以后可以恢复时可以使用Memento设计模式。 记忆模式用于以这种方式实现该目的即在对象外部无法访问该对象的已保存状态数据从而保护了已保存状态数据的完整性。 Memento模式通过两个对象实现-Originator和Caretaker 。 发起者是需要保存和恢复其状态的对象并且它使用内部类来保存对象的状态。 内部类称为Memento及其私有类因此无法从其他对象访问它。 Caretaker是帮助程序类负责通过Memento对象存储和还原发起者的状态。 由于Memento对发起者是私有的因此看守者无法访问它并且将其作为对象存储在看守者中。 现实生活中最好的示例之一是文本编辑器我们可以在其中随时保存其数据并使用undo将其还原到以前的保存状态。 我们将实现相同的功能并提供一个实用程序使我们可以随时将内容写入并保存到文件中并将其恢复到上次保存的状态。 为简单起见我将不使用任何IO操作将数据写入文件。 发起者类 package com.journaldev.design.memento;public class FileWriterUtil {private String fileName;private StringBuilder content;public FileWriterUtil(String file){this.fileNamefile;this.contentnew StringBuilder();}Overridepublic String toString(){return this.content.toString();}public void write(String str){content.append(str);}public Memento save(){return new Memento(this.fileName,this.content);}public void undoToLastSave(Object obj){Memento memento (Memento) obj;this.fileName memento.fileName;this.contentmemento.content;}private class Memento{private String fileName;private StringBuilder content;public Memento(String file, StringBuilder content){this.fileNamefile;//notice the deep copy so that Memento and FileWriterUtil content variables dont refer to same objectthis.contentnew StringBuilder(content);}} } 注意Memento内部类以及save和undo方法的实现。 现在我们可以继续实施看守类。 看守班 package com.journaldev.design.memento;public class FileWriterCaretaker {private Object obj;public void save(FileWriterUtil fileWriter){this.objfileWriter.save();}public void undo(FileWriterUtil fileWriter){fileWriter.undoToLastSave(obj);} } 请注意看守对象包含对象形式的已保存状态因此它无法更改其数据也不知道其结构。 纪念品测试班 让我们编写一个简单的测试程序该程序将使用我们的memento实现。 package com.journaldev.design.memento;public class FileWriterClient {public static void main(String[] args) {FileWriterCaretaker caretaker new FileWriterCaretaker();FileWriterUtil fileWriter new FileWriterUtil(data.txt);fileWriter.write(First Set of Data\n);System.out.println(fileWriter\n\n);// lets save the filecaretaker.save(fileWriter);//now write something elsefileWriter.write(Second Set of Data\n);//checking file contentsSystem.out.println(fileWriter\n\n);//lets undo to last savecaretaker.undo(fileWriter);//checking file content againSystem.out.println(fileWriter\n\n);}} 上面程序的输出是 First Set of DataFirst Set of Data Second Set of DataFirst Set of Data 该模式简单且易于实现需要注意的一件事是Memento类应仅对Originator对象可访问。 同样在客户端应用程序中我们应该使用看守对象来保存和还原发起者状态。 同样如果Originator对象具有不可变的属性我们应该使用深层复制或克隆来避免数据完整性问题就像我在上面的示例中使用的那样。 我们可以使用序列化来实现更通用的memento模式实现而不是Memento模式实现因为每个对象都需要拥有自己的Memento类实现。 缺点之一是如果Originator对象非常大那么Memento对象的大小也会很大并占用大量内存。 参考 Java中的Memento设计模式-我们的JCG合作伙伴 Pankaj Kumar在开发人员食谱博客上的示例教程 。 翻译自: https://www.javacodegeeks.com/2013/08/memento-design-pattern-in-java-example-tutorial.html
http://www.pierceye.com/news/437028/

相关文章:

  • 用php做网站用什么框架牡丹江免费发布信息的平台
  • 网站开发 专有名词江油移动网站建设
  • 百度后台管理东莞市长安镇网站制作优化
  • 长春市建设厅网站大自然的网站设计
  • 网站建设能用手机制作吗人人车网站建设费用
  • 网站开发技术部分网络营销的宏观环境
  • 南宁网站建设公司国外优秀网站案例
  • 做网站需要什么证件吗免费seo技术教程
  • 深圳银行网站建设wordpress 审批流
  • 网站开发设计怎么找客户做企业网站 空间怎么买
  • 怎么在搜索引擎里做网站网页wordpress文章新窗口
  • 企业网站功能对比分析新农村建设 网站
  • 公司网站营销公司做网站都咨询哪些问题
  • 洛阳网站建设价格做网站需要服务器还是主机
  • 北京企业网站制作哪家好做宠物网站导航应该写什么字
  • 做设计网站的工作怎么样郑州企业微网站建设
  • 青岛百度整站优化服务做网站都需要哪些费用
  • 新校区建设专题网站招聘H5在什么网站做最好
  • 网站建设vi设计交互设计是做什么的
  • 怎么做提货网站auto post wordpress
  • 销售网站怎么做的购物网站建设多少钱
  • 泉州网站关键词排名新乡手机网站建设公司
  • 服务器网站建设软件有哪些电子公章在线制作网站
  • 临沂定制网站建设公司金蝶erp软件
  • 企业网站建设需要提供什么内容电子商务网站搜索引擎设计
  • 免费关键词挖掘网站微信网页版下载 官方
  • 品牌设计公司品牌设计公司排名百家号优化上首页
  • 广州网站车管所深圳东门大厦
  • 门户网站 建设商 排名网站下载的视频怎么变成本地视频
  • 国外品牌设计网站中华始祖堂室内设计