很多時(shí)候,創(chuàng)建對象的時(shí)候,只是在某些屬性值上有區(qū)別,而大部分都很相似,但是這樣的對象的初始化相對來說比較復(fù)雜,而且
需要耗費(fèi)較長的時(shí)間或資源,這種情況下,我們可以考慮使用Prototype模式。我覺得這種模式實(shí)用于這樣的情況:如果該類的用戶對于該
類的對象是怎么創(chuàng)建的,對類的內(nèi)部結(jié)構(gòu)這些都不關(guān)心的情況,并且該類的創(chuàng)建過程比較費(fèi)時(shí)或資源時(shí),可以考慮使用該模式。下面是該模式的
一個(gè)例子:
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();?
??
?}
}