定義
1不通過new 關鍵字來產生乙個物件,而是通過物件複製
2:用原型例項指定建立物件的中了你,並且通過拷貝這些原型建立新的物件
public
class
prototypeclass
implements
cloneable catch (clonenotsupportedexception e)
return prototypeclass;
}}
優點# 1 效能優良
#(原型模式是在記憶體二進位製流的拷貝,要比直接new乙個物件效能好。特別是在乙個迴圈體內產生大量的物件是時,原型模式可以更好地體現優點)
# 2 逃避建構函式的約束
#(直接在記憶體拷貝建構函式不會被執行。)
使用場景# 1 資源優化場景
#(類的初始化需要消化非常多的資源,這個資源包括資料、硬體資源等)
# 2 效能和安全要求的場景
#(通過new產生的乙個物件需要非常頻繁的數資料準備或訪問許可權,可以考慮原型模式)
# 3 乙個物件多個修改者的場景
#(乙個物件需要提供給其他物件訪問,而且各個呼叫者可能都需要修改其值,可以考慮原型模式拷貝多個物件供呼叫者使用)
注意淺轉殖
public
class
thing
implements
cloneable catch (clonenotsupportedexception e)
return thing;
}// 設定hashmap值
public
void
setvalue(string val)
public arraylistgetvalue()
}public
class
client
}// 李四是clonething 加進去的,但是轉殖卻把私有物件thing 的arraylist也修改了
object類提供的方法clone只是拷貝本物件,其物件內部的陣列、引用物件等都不拷貝,還是指向原生物件的內部元素位址,這種拷貝就叫做淺拷貝
轉殖不是主流,它主要用於建構函式比較複雜,物件屬性比較多,通過new 關鍵字建立乙個物件比較消耗時間的時候
要使用clone方法,類的成員變數上不要增加final關鍵字
23種設計模式(7) 原型模式
原型模式 prototype pattern 指定要使用原型例項建立的物件的種類,並通過複製此原型來建立新物件。還記得前幾年的多利嗎?被轉殖的羊!簡而言之,通過轉殖基於現有的物件建立乙個新的物件。維基百科上對原型模式的解釋是這樣說的,原型模式是軟體開發中的一種創新設計模式。要建立的物件型別由原型例項...
23種設計模式 原型模式
在軟體系統中,經常面臨著 某些結構複雜的物件 建立工作 由於需求的變化,需要建立的物件的具體型別經常變化,但是它們卻有比較穩定一致的介面。如何應對這種變化?如何向客戶程式 使用這些物件的程式 隔離出 這些易變物件,從而使得 依賴這些易變物件的客戶程式 不隨著需求改變而改變?實現了乙個原型介面,該介面...
Java23種設計模式 原型模式
該系列文章為博主學習筆記,原文請參考參考鏈結 這裡的轉殖方法分為兩種 1 呼叫父類的轉殖方法 該物件應該實現cloneable介面,在轉殖方法中呼叫super.clone 方法,返回乙個全新的物件,改方法屬於淺轉殖。2 在該物件中實現serializable介面,在轉殖方法中運用序列化和反序列化生產...