很多時候,創建對象的時候,只是在某些屬性值上有區別,而大部分都很相似,但是這樣的對象的初始化相對來說比較復雜,而且
需要耗費較長的時間或資源,這種情況下,我們可以考慮使用Prototype模式。我覺得這種模式實用于這樣的情況:如果該類的用戶對于該
類的對象是怎么創建的,對類的內部結構這些都不關心的情況,并且該類的創建過程比較費時或資源時,可以考慮使用該模式。下面是該模式的
一個例子:
Prototype 類
package com.moonsoft;
import java.lang.Cloneable;
public class Prototype implements Cloneable {
?
?public String myname;
?
?Prototype(){
??System.out.println("start:"+System.currentTimeMillis());
??for( int i=0; i< 9999999; i++){???
??}
??System.out.println("end:"+System.currentTimeMillis());
?}
?
?public Object clone(){
??Object o = null;
??try{
???o = super.clone();???
??}
??catch(CloneNotSupportedException ex){
???ex.printStackTrace();
??}
??return o;
?}
?
?public void whoami(){
??System.out.println(myname);
?}
}
測試類
package com.moonsoft;
public class Test {
?
?public static void main(String [] argv){
??Prototype? p = new Prototype();
??p.whoami();
??p.myname = "loucy";
??Prototype? p1 = (Prototype)p.clone();
??p1.whoami();?
??
?}
}