設計模式 原型模式

2021-10-08 01:55:00 字數 1186 閱讀 6286

1)原型模式( prototype模式)是指:用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件

2)原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節

3)工作原理是通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷貝它

們自己來實施建立,即物件.clone()

淺拷貝1)對於資料型別是基本資料型別的成員變數,淺拷貝會直接進行值傳遞,也就是將該屬性值複製乙份給新的物件

2)對於資料型別是引用資料型別的成員變數,比如說成員變數是某個陣列、某個類的物件等,那麼淺拷貝會進行引用傳遞,也就是只是將該成員變數的引用值(記憶體位址)複製乙份給新的物件。因為實際上兩個物件的該成員變數都指向同乙個例項。在這種情況下,在乙個物件中修改該成員變數會影響到另乙個物件的該成員變數值

深拷貝1)複製物件的所有基本資料型別的成員變數值

2)為所有引用資料型別的成員變數申請儲存空間,並複製每個引用資料型別成員變數所引用的物件,直到該物件可達的所有物件。也就是說,物件進行深拷貝要對整個物件(包括物件的引用型別進行拷貝)

3)深拷貝實現方式1:重寫clone方法來實現深拷貝

4)深拷貝實現方式2:通過物件序列化實現深拷貝(推薦)

//深拷貝--通過物件的序列化實現

public object deepclone()catch(exception e)finallycatch(exception e2)}}

原型模式的注意事項和細節1)建立新的物件比較複雜時,可以利用原型模式簡化物件的建立過程,同時也能夠提高效率

2)不用重新初始化物件,而是動態地獲得物件執行時的狀態

3)如果原始物件發生變化(增加或者減少屬性),其它轉殖物件的也會發生相應的變化,無需修改**

4)在實現深轉殖的時候可能需要比較複雜的**

5)缺點:需要為每乙個類配備乙個轉殖方法,這對全新的類來說不是很難,但對已有的類進行改造時,需要修改其源**,違背了ocp原則,這點請同學們注意

spring框架中   原型bean的建立,就是原型模式的應用

設計模式 原型模式

1.首先分析原型模式的由來 一般來說,建立乙個物件可以由以下方法 知道物件的具體型別,直接用new生成。不知道型號,知道相應的需求,可以使用工廠方法模式。根據乙個已有的物件來複製為乙個新的物件,可以使用原型模式。2.原型模式可以簡單理解為拷貝原型物件得到新的物件。想象乙個配鑰匙的小店,給店主乙個原有...

設計模式 原型模式

魔術師手拿一張百元大鈔,瞬間又變出兩張。也像配鑰匙一樣,拿一把鑰匙,老師傅就能做出另乙個一模一樣的。像這種複製我們並不陌生,類似於我們設計中的原型模式 本文將從以下幾點 原型模式 概述 結構圖 淺複製深複製 總結 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。允許乙個物件再建立另外...

設計模式 原型模式

原型模式 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。1 假設我們現有乙個物件,但是它的型別需要執行期確定,我們不知道它的動態型別是什麼,現在我們想建立它的副本。顯然通過建構函式建立是很麻煩的,這時候我們可以使用原型模式中的clone函式直接得到該物件的副本。2 有些時候我們想要...