第126章

小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中使用設計模式變得很自然,兩者已經幾乎是渾然一體了。

第99章第112章第55章第35章第43章第106章第139章第38章第173章第89章第72章第104章第11章第44章第215章第122章第114章第67章第14章第170章第28章第168章第123章第119章第225章第161章第210章第180章第188章第16章第67章第137章第74章第179章第172章第61章第190章第196章第7章第37章第76章第195章第68章第220章第56章第174章第14章第156章第202章第7章第12章第48章第90章第51章第126章第122章第100章第139章第28章第115章第98章第98章第21章第221章第4章第171章第4章第172章第227章第163章第158章第26章第201章第96章第79章第204章第159章第175章第167章第150章第69章第167章第206章第107章第175章第148章第42章第117章第157章第124章第86章第194章第192章第184章第62章第133章第201章第201章第104章
第99章第112章第55章第35章第43章第106章第139章第38章第173章第89章第72章第104章第11章第44章第215章第122章第114章第67章第14章第170章第28章第168章第123章第119章第225章第161章第210章第180章第188章第16章第67章第137章第74章第179章第172章第61章第190章第196章第7章第37章第76章第195章第68章第220章第56章第174章第14章第156章第202章第7章第12章第48章第90章第51章第126章第122章第100章第139章第28章第115章第98章第98章第21章第221章第4章第171章第4章第172章第227章第163章第158章第26章第201章第96章第79章第204章第159章第175章第167章第150章第69章第167章第206章第107章第175章第148章第42章第117章第157章第124章第86章第194章第192章第184章第62章第133章第201章第201章第104章