原型模式--深复制/浅复制

原型模式用于克隆复杂对象,由于new一个实例对象会消耗大部分时间,所以原型模式可以节约大量时间

复制代码
 1 public class Sheep implements Cloneable{
 2     private String name;
 3     private Date birth;
 4     public Sheep(String name, Date birth) {
 5         this.name = name;
 6         this.birth = birth;
 7     }
 8     @Override
 9     protected Object clone(){
10         Sheep obj = null;
11         try {
12             obj = (Sheep) super.clone();
13             //深复制
14 //            obj.birth = (Date) this.birth.clone();
15         } catch (CloneNotSupportedException e) {
16             e.printStackTrace();
17         }
18         return obj;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public Date getBirth() {
27         return birth;
28     }
29     public void setBirth(Date birth) {
30         this.birth = birth;
31     }
32     
33 }
复制代码
import java.util.Date;

public class Client {
    public static void main(String[] args) {
        Date date = new Date(1515529952L);
        Sheep s1 = new Sheep("s1",date);
        Sheep s2 = (Sheep) s1.clone();
        System.out.println(s1.getBirth());
        System.out.println(s2.getBirth());
        date.setTime(15L);//修改后
        System.out.println(s1.getBirth());
        System.out.println(s2.getBirth());
    }
}
复制代码
 1 浅复制
 2     Sun Jan 18 20:58:49 CST 1970
 3     Sun Jan 18 20:58:49 CST 1970
 4     //修改后
 5     Thu Jan 01 08:00:00 CST 1970
 6     Thu Jan 01 08:00:00 CST 1970
 7 深复制
 8     Sun Jan 18 20:58:49 CST 1970
 9     Sun Jan 18 20:58:49 CST 1970
10     修改后
11     Thu Jan 01 08:00:00 CST 1970  //只对s1修改
12     Sun Jan 18 20:58:49 CST 1970
相关推荐
JAVA面经实录9176 分钟前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法
特种加菲猫17 分钟前
继承,一场跨越时空的对话
开发语言·c++
AC赳赳老秦18 分钟前
知识产权辅助:用 OpenClaw 批量生成专利交底书 / 软著申请材料,自动校验格式与内容合规性
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
FYKJ_20101 小时前
springboot校园兼职平台--附源码02041
java·javascript·spring boot·python·eclipse·django·php
玩转单片机与嵌入式1 小时前
玩转边缘AI(TInyML):需要掌握的C++知识汇总!
开发语言·c++·人工智能
茉莉玫瑰花茶2 小时前
Qt 信号与槽 [ 1 ]
开发语言·数据库·qt
书源丶2 小时前
三十六、File 类与 IO 流基础——文件操作的「第一步」
java
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第30题:JDK动态代理和CGLIB动态代理有什么区别
java·开发语言·后端·面试·代理模式
DFT计算杂谈3 小时前
wannier90 参数详解大全
java·前端·css·html·css3