天天看點

原型(Prototype)

用原型執行個體指定建立對象的種類,并且通過拷貝這些原型建立新的對象。

原型模式---Prototype,是指建立新的對象的時候,根據一個現有的原型來建立。

我們舉個例子:如果我們已經有了一個String[]數組,想要再建立一個一摸一樣的String[]數組,怎麼寫?

實際上建立的過程很簡單,就是把現有的數組的元素複制到新的數組。如果我們把這個建立的過程封裝一下,就成了原型模式,用代碼實作如下:

對于普通類,我們如何實作原型拷貝?Java的Obejct提供了一個clone()方法,它的意圖計時複制一個新的對象出來,我們需要實作一個Cloneable接口來辨別一個對象是“可複制”的:

使用的時候,是因為clone()方法的簽名是定義在Obejct中,傳回的類型也是Obejct的我,但是可以使用後一個泛型規定了傳回的類型,就不需要去強制類型轉換,強制轉換的時候比較麻煩。

還可以自己定義一個方法,在方法内部實作建立一個新的對象并且傳回(複制完現有的資料以後傳回)。

原型模式應用不是很廣泛,因為很多執行個體會持有類似檔案,Socket這樣的資源,而這樣的資源是無法複制給另一個對象共享的,隻有存儲簡單類型的“值”對象可以複制。

繼續閱讀