天天看點

大話設計模式之原型模式  原型模式

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

 就是從一個對象在建立另一個可定制的對象,而且不需要知道任何建立的細節。

(1)、實作Cloneable接口,可以使用此接口的類上使用clone方法。

(2)、重寫Object類中的clone方法,因為所有類的父類是Object類,Object有一個clone方法,作用是傳回對象的一個拷貝,但是其作用域protected類型的,一般的類無法調用,是以,将clone改為public類型。

大話設計模式之原型模式  原型模式

 代碼實作:

  用戶端代碼:

  這就是簡單複制。一般在初始化的資訊不發生變化的情況下,科隆市最好的辦法,這既隐藏了對象建立的細節,有對性能是大大的提高。 使用原型模式建立對象比直接new一個對象在性能上要好的多,因為Object類的clone方法是一個本地方法,它直接操作記憶體中的二進制流,特别是複制大對象時,性能的差别非常明顯。

 Object類的clone方法隻會拷貝對象中的基本的資料類型,對于數組、容器對象、引用對象等都不會拷貝,這就是淺拷貝。如果要實作深拷貝,必須将原型模式中的數組、容器對象、引用對象等另行拷貝。

 這裡指談談引用對象的深複制:

 需要解決的代碼:

  運作結果:

大話設計模式之原型模式  原型模式

 而實際上,我們需要的是不一樣的。

 修改代碼:

  用戶端代碼不變。

 運作結果:

大話設計模式之原型模式  原型模式

 得到預期結果。

 其實,我們使用原型模式,簡單的說我們就是簡化對象的建立。

繼續閱讀