設計模式之建立型模式 原型模式模式

2021-10-02 01:31:35 字數 2814 閱讀 3503

原型模式(prototype)

原型模式:使用原型例項指定待建立物件的型別,並且通過複製這個原型來建立新的物件。

原型模式主要涉及兩個概念,淺拷貝與深拷貝。

淺拷貝:是指將乙個物件複製後,基本資料型別的變數都會重新建立,而引用型別,指向的還是原物件所指向的。

深拷貝:是指將乙個物件複製後,不論是基本資料型別還有引用型別,都是重新建立的。簡單來說,就是深複製進行了完全徹底的複製,而淺複製不徹底。

說完理論,接著來舉例:

首先先建立乙個非基本型別的物件(為了能夠實現深拷貝,此處建立的物件必須序列化):

/**

* @author chenglezheng

*/public class clone implements serializable

public void setname(string name)

}

接著我們建立乙個淺拷貝物件

/**

* @author chenglezheng

*/public class cloneshallow implements cloneable

public void settest(int test)

public clone getclone()

public void setclone(clone clone)

public void print()

@override

protected cloneshallow clone() catch (exception e)}}

再來建立乙個深拷貝(深拷貝需要通過流的形式建立

/**

* @author chenglezheng

*/public class clonedeep implements serializable

public void setclone(clone clone)

private int test;

public int gettest()

public void settest(int test)

public void print()

protected clonedeep clone(clonedeep clone) catch (exception e)}}

最後準備測試:

/**

* @author chenglezheng

*/public class prototypetest

}

執行結果:

淺拷貝測試結果…

com.lc.clz.create.prototype.clone@4554617c張三0

com.lc.clz.create.prototype.clone@4554617c張三0

深拷貝測試結果…

com.lc.clz.create.prototype.clone@4554617c張三0

com.lc.clz.create.prototype.clone@378bf509張三0

淺拷貝測試結果1…

com.lc.clz.create.prototype.clone@4554617c

李四10

com.lc.clz.create.prototype.clone@4554617c李四0

深拷貝測試結果1…

com.lc.clz.create.prototype.clone@4554617c

李四10

com.lc.clz.create.prototype.clone@378bf509張三0

結果分析:

改變原物件中的name屬性值,分別設定給淺複製物件和深複製物件

clone.setname(「李四」);

除此之外,不管淺複製還是深複製,基本的資料型別,int,long,float等都會完全複製,可以從以上的輸出結果看出,所有複製物件的int輸出都是0,而原物件輸出的都是10;

總結:原型模式的主要優點如下:

(1)當建立新的物件例項較為複雜時,使用原型模式可以簡化物件的建立過程,通過複製乙個已有例項可以提高新例項的建立效率。

(2)原型模式提供了簡化的建立模式,原型模式中產品的複製是通過封裝在原型類中的轉殖方法實現的,無須專門的建立。

(3)可以使用深轉殖的方式儲存物件的狀態,使用原型模式將物件複製乙份並將其狀態儲存起來,以便在需要的時候使用(如恢復到某一歷史狀態),可輔助實現撤銷操作。

原型模式的主要缺點如下:

(1)需要為每乙個類建立乙個轉殖方法,而轉殖方法位於類的內部,當對已有的功能進行修改時,就需要修改源**,這違背了設計模式的六大原則中的「開閉原則」。

(2)深複製的實現機制很複雜,且當物件之間存在多重的巢狀引用時,為了實現深複製,每一層物件對應的類都必須支援深複製,這樣實現乙個類似這樣的物件複製就顯的尤為複雜。

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

1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...

建立型模式之原型模式

功能 用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。原型模式其實就是從乙個物件建立另外乙個可定製的物件,而且不需知道任何建立的細節。優點 一般在初始化的資訊不發生變化的情況下,轉殖是最好的辦法,既隱藏了物件建立細節,又提高效能。其等於是不用重新初始化物件,而是動態地獲得物件執行時的狀...

建立型模式之原型模式

1 概述 通過給出乙個原型物件來指明所要建立的物件的型別,利用這個原型物件來建立更多相似的統一型別的物件但又不是同乙個物件 世界上可能有千千萬萬個人,但你就是你,你是獨一無二的,顏色不一樣的花火,你是最棒的 因為如果直接建立物件的話,代價可能就會比較大,它屬於建立型模式的一種,它提供了一種建立物件的...