原型模式
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:模板方法模式
下一篇:Clone

发表评论

最新留言

初次前来,多多关照!
[***.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
AndroidStudio_android实现双击_3击_监听实现---Android原生开发工作笔记240 2021-06-29
C++_类和对象_对象特性_初始化列表---C++语言工作笔记045 2021-06-29
AndroidStudio安卓原生开发_UI高级_DrawerLayout_侧滑菜单控件---Android原生开发工作笔记120 2021-06-29
AndroidStudio安卓原生开发_UI高级_Shape的使用_虚线_直线_矩形_渐变_径向渐变_线性渐变_扫描渐变---Android原生开发工作笔记122 2021-06-29
AndroidStudio安卓原生开发_UI高级_StateListDrawable状态选择器_按钮按下和抬起显示不同颜色---Android原生开发工作笔记124 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