原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件, 無需知道如何建立的細節。
原型模式(prototype模式)是指:用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件。
原型模式工作原理是:通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷貝它們自己來實施建立。
淺拷貝的介紹
(1)對於資料型別是基本資料型別的成員變數,淺拷貝會直接進行值傳遞,也就是將該屬性值複製乙份給新的物件。
(2)對於資料型別是引用資料型別的成員變數,比如說成員變數是某個陣列、某個類的物件等,那麼淺拷貝會進行引用傳遞,也就是只是將該成員變數的引用值(記憶體位址)複製乙份給新的物件。因為實際上兩個物件的該成員變數都指向同乙個例項。在這種情況下,在乙個物件中修改該成員變數會影響到另乙個物件的該成員變數值。
實現方式:使用 clone()方法實現淺拷貝
public
class
sheep
implements
cloneable
public string getname()
public
void
setname
(string name)
public
intgetage()
public
void
setage
(int age)
@override
public string tostring()
@override
protected object clone()
catch
(clonenotsupportedexception e)
return sheep;
}}
public
class
client
}
深拷貝的基本介紹
(1)複製物件的所有基本資料型別的成員變數值。
(2)為所有引用資料型別的成員變數申請儲存空間,並複製每個引用資料型別成員變數所引用的物件,直到該物件可達的所有物件。也就是說,物件進行深拷貝要對整個物件進行拷貝
實現方式:通過物件序列化實現深拷貝
public
class
sheep
implements
serializable
, cloneable
public string getname()
public
void
setname
(string name)
public
intgetage()
public
void
setage
(int age)
public sheep getfriend()
public
void
setfriend
(sheep friend)
@override
public string tostring()
public object deepclone()
catch
(exception e)
finally
catch
(exception e2)}}
}
public
class
client
}
設計模式 原型模式介紹 原型模式的深拷貝問題
轉殖羊問題 有乙個羊,是乙個類,有對應的屬性,要求建立完全一樣的10隻羊出來。那麼實現起來很簡單,我們先寫出羊的類 public class sheep然後,建立10只一樣的羊,就在客戶端寫乙個 建立 原始羊 sheep sheep new sheep tom 1,白色 轉殖羊 sheep shee...
建立型模式 原型模式
使用原型例項指定建立物件的種類,並且通過轉殖這些原型建立新的物件 原理是將乙個原型物件傳給要發動建立的物件,該物件通過請求原型物件轉殖自己來建立過程 轉殖方法 public prototype clone jdk中為我們提供了轉殖的方法clone 從object繼承下來,乙個物件要實現轉殖,需要實現...
建立型模式 原型模式
原型 prototype 模式主要用於建立物件的轉殖,通常其最簡單的形式就是採用自定 clone 函式並 傳入物件引數以返回此物件的乙個副本,這在 python 實作上可使用內定 copy.cop y 或 copy.deepcopy 函式來達到此目的。當已有乙個物件但對此物件的某些部分會被變更卻又想...