原型克隆模式

来源:互联网 发布:hadoop和java的关系 编辑:程序博客网 时间:2024/06/06 02:48

//浅复制

public class Sheep implements Cloneable,Serializable{  

private String sname;

private Date birthday;


public Sheep() {}

public Sheep(String sname, Date birthday) {
super();
this.sname = sname;
this.birthday = birthday;
}

@Override
protected Object clone() throws CloneNotSupportedException {
Object obj = super.clone();  //直接调用object对象的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 class Sheep2 implements Cloneable
private String sname;
private Date birthday;

public Sheep2() {
}


public Sheep2(String sname, Date birthday) {
super();
this.sname = sname;
this.birthday = birthday;
}


@Override
protected Object clone() throws CloneNotSupportedException {
Object obj = super.clone();  //直接调用object对象的clone()方法!

//添加如下代码实现深复制(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;
}
}

测试类

Sheep2 s1 = new Sheep2("少利",date);
Sheep2 s2 = (Sheep2) s1.clone();  

原创粉丝点击