設計模式之原型模式(ProtoType)

2021-08-28 19:35:10 字數 1137 閱讀 3828

原型模式是關於轉殖的

1.淺轉殖:只複製基本型別的資料,引用型別的資料只複製了引用的位址,引用的物件並沒有複製,在新的物件中修改引用型別的資料會影響原物件中的引用。

2.深轉殖:是在引用型別的類中也實現了clone,是clone的巢狀,複製後的物件與原物件之間完全不會影響。

3.使用序列化也能完成深複製的功能:物件序列化後寫入流中,此時也就不存在引用什麼的概念了,再從流中讀取,生成新的物件,新物件和原物件之間也是完全互不影響的。

4.使用clone實現的深轉殖其實是淺轉殖中巢狀了淺轉殖,與tostring方法類似

直接實現cloneable介面

public

class

sheep

implements

cloneable

public

sheep

(string name)

@override

protected object clone()

throws clonenotsupportedexception

@override

public string tostring()

';}public string getname()

public

static

void

main

(string[

] args)

throws clonenotsupportedexception

呼叫引用型別的clone方法或者新建引用物件

上面的clone方法可修改為

@override

protected object clone()

throws clonenotsupportedexception

物件實現serializable介面

上面的對應的deepclone為

public object deepclone()

throws ioexception, classnotfoundexception

設計模式之原型模式

原型模式其實就是從乙個物件再建立乙個可定製的物件,而且不需要知道建立的細節。具體就是說通過複製或者轉殖乙個原型物件產生新的物件 轉殖物件 分為兩種 深複製或者淺複製,這兩種的主要區別是 在原型中如果有物件的引用,淺複製是將引用複製過來了,也就是淺複製和原型中的物件的引用相同,而深複製是將轉殖物件中引...

設計模式之原型模式

include include 此練習為原型模式方法的練習 原型模式揭示了在同一原型上可以通過複製使得 只需要例項化一次,再通過相應的類函式操作可以得到 同一原型下的不同的版本物件 此練習將考慮在實際開發中 比如 工作經歷也是作為乙個類被含在簡歷類中的情況 這情況將涉及到類的引用和深 淺複製 原型基...

設計模式之原型模式

原型模式的思想就是將乙個物件作為原型,對其進行複製 轉殖,產生乙個和原物件類似的新物件 複製過程可分為淺複製和深複製。淺複製是指直接呼叫父類 即object類 的clone方法 super.clone 該方法是本地 native 方法,呼叫該方法clone出來的新物件,基本資料型別的屬性變數是新建立...