原型模式--深复制/浅复制
原型模式用于克隆复杂对象,由于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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库