定义:
用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象
Prototype模式允许一个对象再创建另外一个可定制的对象根本无需知道任何如何创建的细节工作原理是:通过将一个原型对象传给那个要发动创建的对象这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建
如何使用?
因为Java中的提供clone()方法来实现对象的克隆(具体了解clone()按这里)所以Prototype模式实现一下子变得很简单
以勺子为例
public abstract class AbstractSpoon implements Cloneable
{
String spoonName;
public void setSpoonName(String spoonName) {thisspoonName = spoonName;}
public String getSpoonName() {return thisspoonName;}
public Object clone()
{
Object object = null;
try {
object = superclone();
} catch (CloneNotSupportedException exception) {
Systemerrprintln(AbstractSpoon is not Cloneable);
}
return object;
}
}
有两个具体实现(ConcretePrototype):
public class SoupSpoon extends AbstractSpoon
{
public SoupSpoon()
{
setSpoonName(Soup Spoon);
}
}
public class SaladSpoon extends AbstractSpoon
{
public SaladSpoon()
{
setSpoonName(Salad Spoon);
}
}
调用Prototype模式很简单:
AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon = new SaladSpoon();
当然也可以结合工厂模式来创建AbstractSpoon实例
在Java中Prototype模式变成clone()方法的使用由于Java的纯洁的面向对象特性使得在Java中使用设计模式变得很自然两者已经几乎是浑然一体了这反映在很多模式上如Interator遍历模式