原型模式
发布日期:2021-09-25 11:48:15
浏览次数:5
分类:技术文章
本文共 1968 字,大约阅读时间需要 6 分钟。
原型模式Prototype:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
例子:进行简历复制
先建立一个工作经历类
package Prototype;public class WorkExperience implements Cloneable{ public String workDate; public String company; public String getWorkDate() { return workDate; } public void setWorkDate(String workDate) { this.workDate = workDate; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public Object clone() throws CloneNotSupportedException{ return super.clone(); } }
简历类
package Prototype;public class Resume implements Cloneable{ private String name; private String sex; private String age; private WorkExperience work; public Resume(String name){ this.name=name; work=new WorkExperience(); } public Resume(WorkExperience work) throws CloneNotSupportedException{ this.work=(WorkExperience)work.clone(); } public void setPersonalInfo(String sex,String age){ this.sex=sex; this.age=age; } public void setWorkExperience(String workDate,String company){ work.workDate=workDate; work.company=company; } public void dispany(){ System.out.println(name+" "+sex+" "+age); System.out.println(work.workDate+" "+work.company); } public Object Clone() throws CloneNotSupportedException{ Resume obj=new Resume(this.work); obj.name=this.name; obj.sex=this.sex; obj.age=this.age; return obj; } }
进行测试,clone两个人
package Prototype;public class Test { public static void main(String[] args) throws CloneNotSupportedException { // TODO Auto-generated method stub Resume a=new Resume("Autumn"); a.setPersonalInfo("woman","18"); a.setWorkExperience("1998--2008", "ali"); Resume b=(Resume)a.Clone(); b.setWorkExperience("1998--2000", "tenxun"); Resume c=(Resume)a.Clone(); c.setWorkExperience("1998--2020", "huawei"); c.setPersonalInfo("man","88"); a.dispany(); b.dispany(); c.dispany(); }}
结果如下,可见,无论是修改值类型还是引用类型,都为对克隆体即原型产生影响
Autumn woman 181998--2008 aliAutumn woman 181998--2000 tenxunAutumn man 881998--2020 huawei
转载地址:https://blog.csdn.net/Autumn03/article/details/80789491 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月03日 16时48分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Command line is too long. Shorten command line for Application---微服务升级_SpringCloud Alibaba工作笔记0067
2021-06-29
C++_类和对象_对象特性_初始化列表---C++语言工作笔记045
2021-06-29
kivy制作安卓APP--简单音乐播放器
2021-06-29
Angular2工程部署到Tomcat服务器,第一次访问正常,刷新浏览器后报404错误
2021-06-29
【力扣】155. 最小栈
2021-06-29
【力扣】160. 相交链表
2021-06-29
【力扣】167. 两数之和 II - 输入有序数组
2021-06-29
【力扣】168. Excel表列名称
2021-06-29
【力扣】456. 132 模式
2021-06-29
【力扣】82. 删除排序链表中的重复元素 II
2021-06-29
【剑指OFFER】 41. 数据流中的中位数
2021-06-29
【力扣】83. 删除排序链表中的重复元素
2021-06-29
【剑指OFFER】 43. 1~n 整数中 1 出现的次数
2021-06-29
【剑指OFFER】44. 数字序列中某一位的数字
2021-06-29
【剑指OFFER】45. 把数组排成最小的数
2021-06-29
【区块链】使用JAV简易A模拟创建区块链及挖矿
2021-06-29