欢迎来到天天文库
浏览记录
ID:38720803
大小:122.04 KB
页数:4页
时间:2019-06-18
《设计模式上机实验4原型模式实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、青岛理工大学课程实验报告课程名称软件设计与体系结构班级软件132实验日期2015.05.09姓名孙玉东学号201307217实验成绩实验名称原型模式实验实验目的及要求1.熟悉原型模式的核心思想。2.掌握原型模式的各种实现方法;3.比较深复制和浅复制特点及其实现方式。实验环境Win7,eclipse实验内容1.利用原型模式实现模拟实现个人简历的复制投放(1)设计个人简历类;简历包括:姓名,性别,年龄,工作经历等;工作经历包括:工作单位,进入时间,离开时间,职位等;(2)利用Memberwise实现浅复制;(3)自己写克隆方法实现深复制。2.利用
2、序列化/反序列化实现深复制(1)实现深复制;(2)比较上述各种方法的区别。算法描述及实验步骤方式一:方式二:自己写方法实现深克隆4方式三:序列化反序列化方式实现克隆调试过程及实验结果方式一:方式二:方式三:4总结1.实现原型模式可以有多种方式。2.实现浅克隆可以实现Cloneable接口,并重写clone方法,内部可以调用父类的实现创建克隆对像。3.实现深克隆要求所有类都要实现clone方法。4.序列化方式实现深克隆,所有类必须实现Seializable接口,因为涉及到io操作,该方法效率不是太高。附录代码:publicResumeclone
3、(){Resumeo=null;try{o=(Resume)super.clone();//实现浅克隆}catch(CloneNotSupportedExceptione){e.printStackTrace();}returno;}publicResumeclone2(){Resumeresume=newResume();resume.age=this.age;resume.name=this.name;resume.sex=this.sex;resume.work=this.work.clone();returnresume;}@Supp
4、ressWarnings("resource")publicResumeclone3(){Resumeresume=null;try{OutputStreamout=newFileOutputStream(newFile("clone.txt"));ObjectOutputStreamobjectOutputStream=newObjectOutputStream(out);objectOutputStream.writeObject(this);4InputStreamin=newFileInputStream(newFile("clone
5、.txt"));ObjectInputStreamobjectInputStream=newObjectInputStream(in);resume=(Resume)objectInputStream.readObject();}catch(Exceptione){e.printStackTrace();resume=null;}returnresume;}packagecom.ilmare.propertype;publicclassMain{publicstaticvoidmain(String[]arg0){WorkExperience
6、work=newWorkExperience();work.setDepart("人事部门");Resumeresume=newResume();resume.setName("张三");resume.setAge(10);resume.setWork(work);ResumeresumeClone=resume.clone3();System.out.println("resumeClone.getAge()==resume.getAge():"+(resumeClone.getAge()==resume.getAge()));System
7、.out.println("resumeClone.getName()==resume.getName():"+(resumeClone.getName()==resume.getName()));System.out.println("resumeClone.getWork()==resume.getWork():"+(resumeClone.getWork()==resume.getWork()));System.out.println(resumeClone.getWork()==resume.getWork()?"浅克隆":"深克隆"
8、);System.out.println("克隆对象工作部门:"+resumeClone.getWork().getDepart());}4
此文档下载收益归作者所有