23種設計模式 (7)原型模式

2021-08-22 07:14:16 字數 1300 閱讀 3176

定義

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介面,在轉殖方法中運用序列化和反序列化生產...