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

原型模式用于克隆复杂对象,由于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
相关推荐
考虑考虑2 小时前
Jpa使用union all
java·spring boot·后端
用户3721574261352 小时前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊3 小时前
Java学习第22天 - 云原生与容器化
java
渣哥5 小时前
原来 Java 里线程安全集合有这么多种
java
间彧5 小时前
Spring Boot集成Spring Security完整指南
java
间彧5 小时前
Spring Secutiy基本原理及工作流程
java
Java水解6 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆8 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学9 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole9 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端