JAVA设计模式之原型模式
来源:互联网 发布:编程类游戏 编辑:程序博客网 时间:2024/05/15 02:36
浅度克隆
package com.imust.prototype;import java.util.Date;/** * 克隆实现这个接口 * @author Zachary (为上帝所心仪的人) * @date 2017年9月6日 * @project shejimoshi * @package com.imust.prototype */public class Sheep implements Cloneable{ private String sname; private Date birthday; @Override protected Object clone() throws CloneNotSupportedException { Object obj = super.clone();//直接调用Object的克隆方法 return obj; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Sheep() { super(); } public Sheep(String sname, Date birthday) { super(); this.sname = sname; this.birthday = birthday; }}
测试1
package com.imust.prototype;import java.util.Date;/** * 测试原型模式(浅克隆) * @author Zachary (为上帝所心仪的人) * @date 2017年9月6日 * @project shejimoshi * @package com.imust.prototype */public class Client { public static void main(String[] args) throws Exception { Date date = new Date(); date.setTime(2323232323L); Sheep s1 = new Sheep("少利",date); System.out.println(s1); System.out.println(s1.getSname()); System.out.println(s1.getBirthday()); Sheep s2 = (Sheep) s1.clone(); System.out.println(s2); System.out.println(s2.getSname()); }}
深度克隆
package com.imust.prototype;import java.util.Date;/** * 深度克隆 * @author Zachary (为上帝所心仪的人) * @date 2017年9月6日 * @project shejimoshi * @package com.imust.prototype */public class Sheep2 implements Cloneable{ private String sname; private Date birthday; @Override protected Object clone() throws CloneNotSupportedException { Object obj = super.clone();//直接调用Object的克隆方法 //添加如下代码实现深复制(deep Clone) Sheep2 s = (Sheep2) obj; s.birthday = (Date) this.birthday.clone(); return obj; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Sheep2() { super(); } public Sheep2(String sname, Date birthday) { super(); this.sname = sname; this.birthday = birthday; }}
测试2
package com.imust.prototype;import java.util.Date;/** * 测试原型模式 * 测试深复制 * @author Zachary (为上帝所心仪的人) * @date 2017年9月6日 * @project shejimoshi * @package com.imust.prototype */public class Client2 { public static void main(String[] args) throws Exception { Sheep2 s1 = new Sheep2("少利",new Date()); Sheep2 s2 = (Sheep2) s1.clone(); System.out.println(s1); System.out.println(s1.getSname()); System.out.println(s1.getBirthday()); Date date = new Date(); date.setTime(23232323232L); s1.setBirthday(date); System.out.println(s1.getBirthday()); s2.setSname("多里"); System.out.println(s2); System.out.println(s2.getSname()); System.out.println(s2.getBirthday()); }}
阅读全文
0 0
- java设计模式之原型设计模式
- java 设计模式之原型模式Prototype
- Java:设计模式之原型模式(Prototype)
- java设计模式之原型模式
- java设计模式之原型模式
- java设计模式之原型模式
- 【Java设计模式】之原型模式
- java设计模式笔记之原型模式
- Java设计模式之原型模式(7)
- Java--设计模式之原型模式
- JAVA设计模式之原型模式
- Java设计模式之原型模式
- JAVA设计模式之原型模式
- JAVA设计模式之原型模式
- java之设计模式---原型模式
- java设计模式之原型模式
- 《Java设计模式》之原型模式
- JAVA设计模式之原型模式
- 软件开发中的上帝模式与农民模式
- laravel复杂的数据库查询(事例)
- POJ_1661_Help Jimmy
- Mac下mvn -v提示Permission denied
- 【BZOJ2431】【HAOI2009】逆序对数列
- JAVA设计模式之原型模式
- [知了堂学习笔记]_记一次BootStrap的使用
- easyui的easyui-combobox
- SCOI2010 糖果 差分约束系统
- PHPMailer发送邮件
- NXP——目录
- ftok说明以及共享内存
- Servlet(1)
- UVA12633(用于计数的FFT)