2019独角兽企业重金招聘Python工程师标准>>>

浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象.

/*** @author stefanie zhao* @date 2014-8-15 下午02:31:04*/
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 void setPersonalInfo(String sex, String age) {this.sex = sex;this.age = age;}public void setWorkExperience(String workDate, String company) {work.setCompany(company);work.setWorkDate(workDate);}public Object clone() {Object re = null;try {return (Object) super.clone();} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();}return re;}public void dispay() {System.out.format("%s %s %s", name, sex, age);System.out.format("工作经历:%s %s", work.getWorkDate(), work.getCompany());}
}
/*** @author stefanie zhao* @date 2014-8-15 下午02:29:23*/
public class WorkExperience {private String workDate;private String company;/*** @return the workDate*/public String getWorkDate() {return workDate;}/*** @param workDate*            the workDate to set*/public void setWorkDate(String workDate) {this.workDate = workDate;}/*** @return the company*/public String getCompany() {return company;}/*** @param company*            the company to set*/public void setCompany(String company) {this.company = company;}}
public class Main {/*** 浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象.* * @Description: TODO* @param @param args* @return void* @throws*/public static void main(String[] args) {Resume a = new Resume("A");a.setPersonalInfo("man", "28");a.setWorkExperience("2009-2011", "xx company");Resume b = (Resume) a.clone();b.setWorkExperience("2011-2013", "yy company");Resume c = (Resume) a.clone();c.setWorkExperience("2011-2013", "zz company");a.dispay();b.dispay();c.dispay();}}

深复制把引用对象的变量指向复制过来的新的对象,而不是原来的被引用的对象。

/*** @author stefanie zhao* @date 2014-8-15 下午02:31:04*/
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) {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.setCompany(company);work.setWorkDate(workDate);}public Object clone() {Resume re = new Resume(this.work);re.setPersonalInfo(this.sex, this.age);return re;}public void dispay() {System.out.format("%s %s %s", name, sex, age);System.out.format("工作经历:%s %s", work.getWorkDate(), work.getCompany());}
}
/*** @author stefanie zhao* @date 2014-8-15 下午02:29:23*/
public class WorkExperience implements Cloneable {private String workDate;private String company;/*** @return the workDate*/public String getWorkDate() {return workDate;}/*** @param workDate*            the workDate to set*/public void setWorkDate(String workDate) {this.workDate = workDate;}/*** @return the company*/public String getCompany() {return company;}/*** @param company*            the company to set*/public void setCompany(String company) {this.company = company;}public Object clone() {Object re = null;try {return (Object) super.clone();} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();}return re;}
}
public class Main {/*** 深复制把引用对象的变量指向复制过来的新的对象,而不是原来的被引用的对象。* * @Description: TODO* @param @param args* @return void* @throws*/public static void main(String[] args) {Resume a = new Resume("A");a.setPersonalInfo("man", "28");a.setWorkExperience("2009-2011", "xx company");Resume b = (Resume) a.clone();b.setWorkExperience("2011-2013", "yy company");Resume c = (Resume) a.clone();c.setWorkExperience("2011-2013", "zz company");a.dispay();b.dispay();c.dispay();}}

转载于:https://my.oschina.net/stefanzhlg/blog/308136

《设计模式系列》---克隆模式相关推荐

  1. 设计模式系列——克隆模式

    设计模式系列--克隆模式 前言 native关键字 原型模式适用的场景 原型模式的应用 原型模式实战 浅克隆 深克隆 前言 在我们工作中经常能遇到大幅度使用get或set方法,例如下面这样的代码 pu ...

  2. 设计模式系列-创建者模式

    为什么80%的码农都做不了架构师?>>>    一.上篇回顾 上篇我们主要讲述了抽象工厂模式和工厂模式.并且分析了该模式的应用场景和一些优缺点,并且给出了一些实现的思路和方案,我们现 ...

  3. plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式

    点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章.本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(sin ...

  4. 设计模式系列-代理模式

    为什么80%的码农都做不了架构师?>>>    一.上篇回顾 很久没有更新设计模式系列的文章了,有了很多热心朋友的反馈,我决定继续将这个系列赶快写完,最近由于过年了,有很多相关的事宜 ...

  5. 克隆模式java_java基础之----23种设计模式(克隆模式)

    概述 克隆模式是一种比较简单的设计模式,基本从字面意思就可以明白这种设计模式是干什么的,简单来说就是造一个和原来一模一样的对象,就叫克隆模式.克隆模式分为两种,一种是浅度克隆,一种是深度克隆,至于这两 ...

  6. PHP设计模式系列 - 外观模式

    外观模式 通过在必需的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了调用对象的复杂性. 外观设计模式和建造者模式非常相似,建造者模式一般是简化对象的调用的复杂性,外观模式一般是简化含有很多逻 ...

  7. 设计模式GOF23——克隆模式

    克隆模式(protopyte)是创建者模式的一种,是一种负责创建对象的模式.也叫原型模式 模式的应用场景 创建一个对象需要非常繁琐的数据准备或者访问权限,为了节省时间,可以使用克隆模式. 克隆模式就是 ...

  8. 策略模式和工厂模式的区别_设计模式系列 — 策略模式

    点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章. 本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(si ...

  9. 设计模式系列 - 解释器模式

    解释器模式通过实现一个表达式接口,从而能够以指定方式解析指定内容 介绍 解释器模式属于行为型模式,通过这种设计模式,我们可以定义一种特定的解释器来解释特定的业务场景,可以类比不同的编程语言的编译器需要 ...

  10. 设计模式系列-组合模式

    今天下班客厅的灯确实亮堂了许多,照照镜子感觉自己一下苍老许多,看来还是灯光暗比较好,看不出来自己的憔悴啊,哈哈,其实还是头发长了,决定出去剪发. 进到美发店,便有热情的服务生招呼,显示洗头,挑选造型师 ...

最新文章

  1. python写一个文件下载器_Python3使用TCP编写一个简易的文件下载器
  2. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、xgboost模型预测推理并使用混淆矩阵评估模型、可视化模型预测的概率分布
  3. 【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )
  4. matlab中的方波信号图片_电气信息类专业课程之matlab系统仿真 第十章 DBPSK调制解调器(9)...
  5. java+@api_Java 常用的api
  6. python—操作MySQL查询表中数据
  7. 计算机硬件市场调查实验报告,计算机组装与维护实训报告范例.doc
  8. java和golang性能_Java本质和性能
  9. jquery +ajax 上传加预览
  10. c#里面的combobox在代码中怎么根据它的text获取它的index?
  11. python常用函数年初大总结
  12. 禁用行、列、单元格单元格编辑
  13. 30天敏捷生活(7):生成行动计划
  14. Java - 多线程Callable、Executors、Future
  15. Java的一些基础问题
  16. QueryRunner类常用的方法
  17. 送书《数据库系统概念》,送课,SQL必备!!
  18. 视频教程-WPS Office轻松办公(表格篇)-Office/WPS
  19. amp;#9733;色盲悖论正解!
  20. Google Play App Signing

热门文章

  1. 素数筛法求十亿内所有质数的和(C++)
  2. python 取日期_python取出所有的日期
  3. ipad如何连接电脑_电脑无法连接外网远程调试,一文教你如何用手机让台式机连接外网...
  4. 如何在graphpad表示出正负误差_Graphpad Prism:SCI科研论文中误差连线图怎么做
  5. redis集群连接 java_Redis分布式集群和直连的Java客户端调用方式详解
  6. 分拣外观残缺的机器人_复合机器人AGV+协作机器人的应用领域
  7. amr 转mp3 java_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7
  8. python使用函数目的_Python函数的概念和使用
  9. php str pa,php截取字符串方法有哪些
  10. 国内首家,每周到岗上班3天,携程率先推出“3+2”混合办公模式