原型模式
被引用对象
public class BaseInfo implements Cloneable{
private String CompanyName;
public BaseInfo() {
}
@Override
protected BaseInfo clone() throws CloneNotSupportedException {
return ((BaseInfo) super.clone());
}
public BaseInfo(String companyName) {
CompanyName = companyName;
}
@Override
public String toString() {
return super.hashCode()+"BaseInfo{" +
"CompanyName='" + CompanyName + '\'' +
'}';
}
public String getCompanyName() {
return CompanyName;
}
public void setCompanyName(String companyName) {
CompanyName = companyName;
}
}
需要实例化的对象
public class Product implements Cloneable{
private String part1;
private String part2;
private Integer part3;
private Integer part4;
private Integer part5;
private BaseInfo part6;
public BaseInfo getPart6() {
return part6;
}
public void setPart6(BaseInfo part6) {
this.part6 = part6;
}
@Override
protected Product clone() throws CloneNotSupportedException {
Product clone = (Product) super.clone();
BaseInfo clone1 = this.part6.clone();
clone.setPart6(clone1);
return clone;
}
@Override
public String toString() {
return super.hashCode()+"Product{" +
"part1='" + part1 + '\'' +
", part2='" + part2 + '\'' +
", part3=" + part3 +
", part4=" + part4 +
", part5=" + part5 +
", part6=" + part6 +
'}';
}
public Product() {
}
public Product(String part1, String part2, Integer part3, Integer part4, Integer part5,BaseInfo part6) {
this.part1 = part1;
this.part2 = part2;
this.part3 = part3;
this.part4 = part4;
this.part5 = part5;
this.part6 = part6;
}
public String getPart1() {
return part1;
}
public void setPart1(String part1) {
this.part1 = part1;
}
public String getPart2() {
return part2;
}
public void setPart2(String part2) {
this.part2 = part2;
}
public Integer getPart3() {
return part3;
}
public void setPart3(Integer part3) {
this.part3 = part3;
}
public Integer getPart4() {
return part4;
}
public void setPart4(Integer part4) {
this.part4 = part4;
}
public Integer getPart5() {
return part5;
}
public void setPart5(Integer part5) {
this.part5 = part5;
}
}
测试类
public class PrototypeTest {
public static void main(String[] args) throws CloneNotSupportedException {
BaseInfo baseInfo = new BaseInfo("123");
Product product = new Product("1", "2", 3, 4, 5,baseInfo);
Product clone = product.clone();
System.out.println(clone);
System.out.println(product);
}
}