原型模式定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
如何使用? 因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一下子变得很简单.
以勺子为例:
public abstract class AbstractSpoon implements Cloneable {
public String spoonName;
public String getSpoonName() {
return this.spoonName;
}
public void setSpoonName(String spoonName) {
this.spoonName = spoonName;
}
/**
* 重写clone()方法
*/
@Override
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
System.out.println("此对象不支持复制");
}
return null;
}
}
对原型的具体实现:
public class SoupSpoon extends AbstractSpoon {
public SoupSpoon() {
setSpoonName("chinaDrong");
}
}
测试类:
public class Client {
public static void main(String[] args) {
AbstractSpoon spoon = new SoupSpoon();
System.out.println(spoon.getSpoonName());
// 通过对象的clone()方法,即可获得对象的一个copy.
AbstractSpoon spoon2 = (AbstractSpoon) spoon.clone();
System.out.println(spoon2.getSpoonName());
AbstractSpoon spoon3 = (AbstractSpoon) spoon2.clone();
System.out.println(spoon3.getSpoonName());
}
}
输出结果:
chinaDrong
chinaDrong
chinaDrong