設計模式 原型

2021-08-29 01:57:01 字數 936 閱讀 1125

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

從乙個物件再建立另外乙個可定製的物件,而且不需知道任何建立的細節。

核心**(轉殖原型物件):return (object) this.memberwiseclone();

淺複製 vs 深複製

在學習淺複製深複製之前先來了解傳值和傳引用

傳值:將a變數的值傳值給b變數

所以,傳值只是傳值,兩者並沒有關係,當a發生改變時,b不會發生改變。而傳引用是將a和b的位址指向同乙個位址,只要有乙個值發生改變時,另乙個也會發生改變(注:string是一種擁有值型別特點的特殊引用型別)。

而在原型模式中的memberwiseclone()方法:如果欄位是值型別的,則對該字段執行逐位複製,如果欄位是引用型別,則複製引用但不複製引用物件;因此,原始物件及其複本引用同一物件。

淺複製:被賦值物件的所有變數都含有與原來的物件相同的值,而所有的其他物件的引用都仍然指向原來的物件。

簡單理解:若有a b c淺複製原型,先修改原型引用的值為a的值,然後例項化物件a複製原型,b、c同理,最後原型引用的值為c的值,而a b的引用指向原型,故a b最後引用的值都為c引用的值。此為淺複製。

深複製:把要複製的物件所引用的物件都複製一遍。深複製把引用物件的變數指向複製過的新物件,而不是原有被引用的物件。

簡單理解:若有a b c 深複製原型,先把a複製原型,再修改a中的值,b複製a,例項化b為a的物件(全盤複製),再改b中的值,c同理,最後a b c 的引用都指向的是它們本身的位址。此為深複製。

深複製、淺複製**最大的不同

python 設計模式 原型模式 原型設計模式

原型設計模式有助於隱藏該類建立例項的複雜性,在物件的概念將與從頭建立的新物件的概念不同。如果需要,新複製的物件可能會在屬性中進行一些更改。這種方法節省了開發產品的時間和資源。如何實現原型模式?現在讓我們看看如何實現原型模式。實現如下 import copy class prototype type ...

設計模式 原型設計模式

建立型的模式,最後一種原型設計模式。是一種使用起來簡單,可以配合單例模式或是工廠設計模式使用的。先看一下,原型設計模式是怎麼回事兒吧。如果想使用原型設計模式。必須滿足乙個條件,首先實現cloneable介面,然後重寫clone方法。這樣就算是完成了,然後就開始測試了 建立完物件以後給phone乙個當...

原型設計模式

一 應用場景 在乙個特定的場景中經常需要出現多個相同但狀態各異的物件,通常的解決方法是通過new建立這些物件之後分別去設定這些物件的狀態。原型設計模式提供了更快捷 更有效的解決方法。二 意圖 通過複製 轉殖 拷貝 乙個指定型別的物件來建立更多同型別的物件。這個指定的物件可被稱為 原型 物件,也就是通...