小A:“師兄,原型模式應該如何使用?”
大B:“好!因爲Java中的提供clone()方法來實現對象的克隆,所以Prototype模式實現一下子變得很簡單。”
以勺子爲例:
publicabstractclassAbstractSpoonimplementsCloneable
{
StringspoonName;
publicvoidsetSpoonName(StringspoonName){this.spoonName=spoonName;}
publicStringgetSpoonName(){returnthis.spoonName;}
publicObjectclone()
{
Objectobject=null;
try{
object=super.clone();
}catch(CloneNotSupportedExceptionexception){
System.err.println(“AbstractSpoonisnotCloneable”);
}
returnobject;
}
}
有兩個具體實現(ConcretePrototype):
publicclassSoupSpoonextendsAbstractSpoon
{
publicSoupSpoon()
{
setSpoonName(“SoupSpoon”);
}
}
publicclassSaladSpoonextendsAbstractSpoon
{
publicSaladSpoon()
{
setSpoonName(“SaladSpoon”);
}
}
調用Prototype模式很簡單:
AbstractSpoonspoon=newSoupSpoon();
AbstractSpoonspoon=newSaladSpoon();
當然也可以結合工廠模式來創建AbstractSpoon實例。
在Java中Prototype模式變成clone()方法的使用,由於Java的純潔的面向對象特性,使得在Java中使用設計模式變得很自然,兩者已經幾乎是渾然一體了。