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

微网站 建设方案网站制作公司在哪里找

微网站 建设方案,网站制作公司在哪里找,教育机构网站,电子商务网站帮助中心该怎么更好地设计设计模式—创建型模式之原型模式 原型模式#xff08;Prototype Pattern#xff09;用于创建重复的对象#xff0c;同时又能保证性能。 本体给外部提供一个克隆体进行使用。 比如我们做一个SjdwzMybatis#xff0c;用来操作数据库#xff0c;从数据库里面查出很多记录Prototype Pattern用于创建重复的对象同时又能保证性能。 本体给外部提供一个克隆体进行使用。 比如我们做一个SjdwzMybatis用来操作数据库从数据库里面查出很多记录其中很多记录改变很少。每次查数据库把所有数据都封装一个对象然后返回。假设有很多线程来查如下记录 Student student new Student(张三,男)如果每次都创建对象封装并返回这样系统就会有很多student这样就会浪费内存。 Student类如下 public class Student {private String name;private Integer age;public Student() {System.out.println(创建了Student对象);}//省略getter() 、 setter() toString() } SjdwzMybatis如下 public class SjdwzMybatis {/*** 通过name获取Student*/public Student queryStudent(String name){return queryStudentFromDB(name);}/*** 演示从数据库查Student*/private Student queryStudentFromDB(String name) {//简单演示查询到了System.out.println(从数据库查询到了:name);Student student new Student();student.setName(name);student.setAge(16);return student;} }测试类 public class ProtoTypeTest {public static void main(String[] args) {SjdwzMybatis sjdwzMybatis new SjdwzMybatis();Student stu1 sjdwzMybatis.queryStudent(zhangsan);Student stu2 sjdwzMybatis.queryStudent(zhangsan);Student stu3 sjdwzMybatis.queryStudent(zhangsan);Student stu4 sjdwzMybatis.queryStudent(zhangsan);} }这样会有大量具有相同属性的student被外部创建同时查库次数过多。 我们是否能设计一个缓存来保存查过的内容再查相同的记录时可以很快拿到原来的原型对象呢 那我们的SjdwzMybatis便变成了如下代码 public class SjdwzMybatis {//缓存private MapString,Student stuCache new HashMap();/*** 通过name获取Student*/public Student queryStudent(String name){if(stuCache.containsKey(name)){return stuCache.get(name);}else{return queryStudentFromDB(name);}}/*** 演示从数据库查Student*/private Student queryStudentFromDB(String name) {//简单演示查询到了System.out.println(从数据库查询到了:name);Student student new Student();student.setName(name);student.setAge(16);//存入内存stuCache.put(name,student);return student;} }但是这是否会有问题呢 如果我们把stu1的属性改了那么stu2、stu3、stu4的属性也会被改变这会影响到我们缓存里的数据造成脏缓存数据同时我们查出来的内容并没有提交修改不能就把原数据给修改掉。 原型模式 我们把Student修改成如下代码这便是原型模式 //实现Cloneable接口这只是一个标记还需要重写clone()方法 public class Student implements Cloneable{private String name;private Integer age;//重写clone方法Overrideprotected Object clone() throws CloneNotSupportedException {Student student new Student();student.setName(this.name);student.setAge(this.age);return student;} }然后SjdwzMybatis修改为如下代码 public class SjdwzMybatis {//缓存private MapString,Student stuCache new HashMap();/*** 通过name获取Student*/public Student queryStudent(String name) throws CloneNotSupportedException {if(stuCache.containsKey(name)){return (Student) stuCache.get(name).clone();}else{return queryStudentFromDB(name);}}/*** 演示从数据库查Student*/private Student queryStudentFromDB(String name) throws CloneNotSupportedException {//简单演示查询到了System.out.println(从数据库查询到了:name);Student student new Student();student.setName(name);student.setAge(16);//存入内存stuCache.put(name,(Student) student.clone());return student;} }从数据库查出来放入缓存的对象与从缓存取出来的都是clone出来的。 可以看到我们对stu1修改并不会影响其他的数据了。
http://www.dnsts.com.cn/news/111265.html

相关文章:

  • 做网站汉狮网络京东建站模板
  • 行业网站开发网站建设首选九零后网络
  • 单页面网站做百度推广效果瑞安自适应网站建设
  • 做网站建设注册商标是多少类辽宁省交通投资建设集团网站
  • 网站建设存在的问题网站设计与制作是什么专业
  • 网站后台上传图片不显示pc蛋蛋网站怎么做
  • 找做网站的客户安徽seo网络推广
  • 淮安市网站网页设计作品我的家乡
  • 沈阳市建设工程安全监督站网站软件跟网站开发的区别
  • 用html5做的网站源码今天新闻头条
  • 怀化网站建设网站凡客诚品倒闭了
  • 网站建设方案范文1000字岐山网站开发
  • 电子商务网站建设报告怎么写如何做卖菜网站
  • 邢台网站建设有哪些网站开发过程中出现的问题
  • 做化妆品注册和注册的网站wordpress ality
  • 网站开发应该怎么学让人做网站需要准备什么软件
  • 企业网站seo诊断报告阳江市问政平台留言
  • 镇江公司做网站dw个人网站制作
  • 网站建设能挣钱吗wordpress slug translate
  • 做网站高亮怎样在谷歌做网站
  • 无锡免费网站制作莱芜昨天下午又死了7个
  • 扬州网站建设开发宁波网站制作公司排名
  • 公司网站建设费用会计入账wordpress最大附件
  • 网站开发 php 实例教程安徽百度seo公司
  • 教育局网站建设管理工作意见义乌网站建设技巧培训
  • 电商网站规划论文扬州建设信用网站
  • 检测网站开发语言工具聊城做网站的公司流程
  • 南宁网站建设公司排名魏县住房和城乡建设局网站
  • 电商型网站开发多少钱百度快照排名
  • 郑州网站设计排行想在网站里添加超链接怎么做