目录
Prototype Design Pattern
public class Beast {
private final String name;
private final int id;
private Beast(Beast beast) {
this.name = beast.name;
this.id= beast.id;
}
public Beast copy() {
return new Beast(this);
}
}
public class BeastFactory {
private final Beast beastPrototype;
public BeastFactory(Beast beastPrototype) {
this.beastPrototype = beastPrototype;
}
public Beast createBeast() {
return beastPrototype.copy();
}
}
基于重写clone()的相关优化
public class Beast {
private final String name;
private final int id;
private Beast(Beast beast) {
this.name = beast.name;
this.id= beast.id;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return new Beast(this);
}
}
public class BeastFactory {
private final Beast beastPrototype;
public BeastFactory(Beast beastPrototype) {
this.beastPrototype = beastPrototype;
}
public Beast createBeast() throws CloneNotSupportedException {
return (Beast) beastPrototype.clone();
}
}