用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
一、实体类图
二、业务样例代码
package com.hongyan.prototype;
/**
* 克隆
*/
public class Test {
public static void main(String[] args) throws Exception {
Person p1 = new Person();
Person p2 = (Person)p1.clone();
System.out.println("p1.loc == p2.loc? " + (p1.loc == p2.loc));
p1.loc.street.reverse();
System.out.println(p2.loc.street);
}
}
class Person implements Cloneable {
int age = 8;
int score = 100;
Location loc = new Location(new StringBuilder("bj"), 22);
@Override
public Object clone() throws CloneNotSupportedException {
Person p = (Person)super.clone();
p.loc = (Location)loc.clone();
return p;
}
}
class Location implements Cloneable {
StringBuilder street;
int roomNo;
@Override
public String toString() {
return "Location{" +
"street='" + street + '\'' +
", roomNo=" + roomNo +
'}';
}
public Location(StringBuilder street, int roomNo) {
this.street = street;
this.roomNo = roomNo;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}