設計模式 建立型 原型模式的多種實現方法

2021-10-24 23:53:13 字數 1534 閱讀 4582

原型模式(prototype)是用於建立重複的物件,同時又能保證效能。這種模式是實現了乙個原型介面,該介面用於建立當前物件的轉殖。當直接建立物件的代價比較大時,則採用這種模式。

淺拷貝只複製指向某個物件的指標,而不複製物件本身,新舊物件還是共享同一塊記憶體

public

class

prototypeexample

}class

prototype

implements

cloneable

// 省略getter、setter方法

@override

protected object clone()

throws clonenotsupportedexception

@override

public string tostring()

}class

type

結果:

這裡我們會發現,淺拷貝後prototype內部的type型別的引用,依然是指向同乙個例項(共享同一塊記憶體)。

深拷貝會另外創造乙個一模一樣的物件,新物件跟原物件不共享記憶體,修改新物件不會改到原物件。

深拷貝一般有兩種方法,**與上面的相似,下面只放出clone()方法的重寫:

在淺拷貝的基礎上實現,給引用型別的屬性新增轉殖方法,並且在拷貝的時候也實現引用型別的拷貝。此種方法由於要在多個地方實現拷貝方法,可能會造成混論。

class

prototype

implements

cloneable

}class

type

implements

cloneable

}

結果:

為避免複雜物件中使用clone方法可能帶來的換亂,可以使用串化來實現深拷貝。先將物件寫到流裡,然後再從流裡讀出來。

class

prototype

implements

cloneable

, serializable

catch

(exception e)

finally

if(oos != null)

if(is != null)

if(ois != null)

}catch

(ioexception e)

}return prototype;}}

class

type

implements

serializable

結果:

建立型設計模式 原型模式

總結 羊 program ade someproblem author cade franklin create 2019 12 22 22 12 public class sheep tostring setter getter program ade someproblem author cad...

設計模式(建立型) 原型模式

原型模式的定義 以乙個已經建立的例項作為原型,通過複製該物件來建立乙個和原型相同或相似的新物件。1.複製在效能上比直接 new 乙個物件更加優良。2.可以使用深拷貝方式儲存物件的狀態,使用原型模式將物件複製乙份,並將其狀態儲存起來,可輔助實現撤銷操作。1.需要為每乙個類配備乙個轉殖方法,對已有的類進...

建立型設計 原型模式

宣告一下 本文的文字多數文字都是來自網上,只有例子是自己寫的。因為自我感覺還沒有能力能夠系統的解釋乙個模式,已經有現成的比較完善的說明,就不重複造輪子哈。原型模式是一種建立型設計模式,它通過複製乙個已經存在的例項來返回新的例項,而不是新建例項.被複製的例項就是我們所稱的原型,這個原型是可定製的。原型...