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