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

2021-10-07 04:27:41 字數 1272 閱讀 2665

如題,今天我要總結的是建立型設計模式中的原型模式及單例模式,let』s go !

原型模式

正如我前面那篇建立型導論部落格總結的那樣,原型模式和所有的建立型設計模式一樣都需要建立乙個新的物件,我們通過使用這個新物件來完成一些對物件的操作。

原型模式和其他建立型模式的不同點在於它並不需要通過專門new()就可以快速的完成物件的建立,毋庸置疑這種特性讓它的在實際使用時的效率非常高,或者說它生來高效。

定義:

原型模式用原型例項制定建立物件的種類,並通過拷貝這些原型建立新的物件。

使用場景

1.物件的建構函式中非常複雜,類的初始化需要消耗非常多的資源。

2.類的初始化需要非常多的資料準備和許可權。

3.這個物件需要提供其他物件訪問,呼叫者為複數且都需要修改其中的值時。

以上三種場景都可以使用原型模式。

原型模式的組成

1.使用原型物件的客戶程式

2.規定具體原型物件必須實現介面的抽象原型。

3.由抽象原型派生,由客戶程式使用,需要實現抽象原型所要求的介面的具體原型

淺複製和深複製

說到淺複製和深複製就要先說一下物件屬性的兩個型別,基本型別和引用型別。

淺複製和深複製的區別就體現在在clone時對基本型別和引用型別的操作不同。

淺複製:

淺複製只會複製物件的基本型別的值,對於引用型別僅僅複製其引用的值,而不會將引用的具體物件複製下來。因此如果在被複製物件中對b進行操作,那麼複製物件也能看到,因為他改變的是兩者共有的物件。

深複製:

深複製則不僅會複製物件的引用物件的值,還會將引用型別的引用的物件一併複製過來,這樣參與複製的雙方無論進行什麼操作對方都不能看到。對其中一方的操作無法影響到另一方。

總結:

優點:1.產品的建立過程被封裝了,客戶端不需要了解具體的建造過程

2.利用clone方法建立物件比通過用new方法建立物件時快很多,尤其是複雜的物件

3.符合開閉原則,可以在不修改其他**的情況下新增新的產品。

缺點:每乙個類都需要乙個clone方法,如果這個類的組成十分複雜,在進行深複製就非常困難。

建立型設計模式 原型模式

總結 羊 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.需要為每乙個類配備乙個轉殖方法,對已有的類進...

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

原型模式不僅是一種設計模式,它還是一種程式設計正規化 programming paradigm 是 j ascript 物件導向系統實現的根基。在原型模式下,當我們想要建立乙個物件時,會先找到乙個物件作為原型,然後通過轉殖原型的方式來建立出乙個與原型一樣 共享一套資料 方法 的物件。在 j ascr...