拓展思路
相關設計模式
滿足的原則
需要乙個類的大量物件的時候,使用原型模式是最佳選擇,因為原型模式是在記憶體中對這個物件進行拷貝,要比直接new這個物件效能要好很多,在這種情況下,需要的物件越多,原型模式體現出的優點越明顯。
如果乙個物件的初始化需要很多其他物件的資料準備或其他資源的繁瑣計算,那麼可以使用原型模式。
當需要乙個物件的大量公共資訊,少量字段進行個性化設定的時候,也可以使用原型模式拷貝出現有物件的副本進行加工處理。
由於clone方法是由虛擬機器直接複製記憶體塊執行,所以在速度上比使用new的方式建立物件要快。
可以基於原型,快速的建立乙個物件,而無需知道建立的細節。
可以在執行時動態的獲取物件的型別以及狀態,從而建立乙個物件。
配備轉殖方法需要對類的功能進行通盤考慮,這對於全新的類不是很難,但對於已有的類不一定很容易,特別當乙個類引用不支援序列化的間接物件,或者引用含有迴圈結構的時候。
實現原型模式每個派生類都必須實現 clone介面。
逃避建構函式的約束。
示例程式的類圖
示例**
public
class
product
implements
cloneable
public
product
(int id, string name)
public
intgetid()
public
void
setid
(int id)
public string getname()
public
void
setname
(string name)
@override
protected object clone()
throws clonenotsupportedexception
@override
public string tostring()
}
public
class
order
implements
cloneable
public
order
(int num, string name, product product)
public
intgetnum()
public
void
setnum
(int num)
public string getname()
public
void
setname
(string name)
public product getproduct()
public
void
setproduct
(product product)
@override
protected object clone()
throws clonenotsupportedexception
@override
public string tostring()
}
public
class
main
list.
add(order)
; system.out.
println
("共有"
+list.
size()
+"份訂單");
for(
int i=
0; i
size()
; i++)}
}
PHP物件的淺複製與深複製的例項詳解
最近在看原型模式時注意到這個問題 php中物件 與 clone 的區別 例項 聚合類 class obja 只有實現了下面方法聚合類 才能實現深複製 function clone class objb 原型物件 obja new obja 複製物件 複製引用 obja2 obja obja2 num...
通過 IndexOf查詢指定的內容例項
今天想學flash as3 網上找到矽谷動力 private string down string url 這裡建立了乙個執行緒函式 private void therd else 建立委託函式 更新介面 private delegate void delegatewriteresult int i...
通過例項來實現split的理解
首先將這個url的各個部分區分開來,用split url,以下是具體的 parts split url,此時parts就有三部分,parts 0 ftp,parts 1 username,parts 2 password server 接下來剔除沒有用到的資訊 由於只取username,所以其中pa...