建立型的模式,最後一種原型設計模式。
是一種使用起來簡單,可以配合單例模式或是工廠設計模式使用的。
先看一下,原型設計模式是怎麼回事兒吧。
如果想使用原型設計模式。必須滿足乙個條件,首先實現cloneable介面,然後重寫clone方法。
這樣就算是完成了,然後就開始測試了
建立完物件以後給phone乙個當前時間的出廠日期,然後clone,最後再修改phone的出廠時間,結果我的clone的物件值也改變了。。是不是很奇怪,哈哈,這就是所說的淺複製(淺轉殖),這到底是怎麼回事兒呢?
是這樣的,現在有兩個物件,乙個是phone,乙個是clone,他們都有time這個出廠日期的屬性,在轉殖完phone物件後有了clone物件,但是phone物件中的time屬性肯定指向date型別物件空間,clone中的time屬性也將物件位址指向了跟phone中的同乙個,所以phone中的time改變的時候clone的time屬性也會跟著改變,這就是淺複製
還有一種深複製(深轉殖),那深複製是怎麼回事兒呢?其實就跟淺複製相反,在改變原物件phone的time屬性時,clone物件中的time不改變就是深複製了。
深複製的實現方式有兩種,
第一種使用序列化和反序列化實現 (如果使用該方式實現,必須還要實現serializable介面)
優點:不用修改phone的類
缺點:使用起來比較繁瑣。
還有一種通過**我們自己來做深複製的方式,修改clone方法
這樣使用起來比較簡單,兩種方式都能實現深複製
原物件的時候還是需要使用new來建立的,可以通過工廠或是單例模式配合使用更佳。
下面說下我對原型設計模式的理解:
其實就是ctrl c 的操作,哈哈。。。可能我理解的比較膚淺,希望你能夠留下你深層次的理解與我分享。謝謝
python 設計模式 原型模式 原型設計模式
原型設計模式有助於隱藏該類建立例項的複雜性,在物件的概念將與從頭建立的新物件的概念不同。如果需要,新複製的物件可能會在屬性中進行一些更改。這種方法節省了開發產品的時間和資源。如何實現原型模式?現在讓我們看看如何實現原型模式。實現如下 import copy class prototype type ...
設計模式(二) 原型設計模式
官方定義 使用原型例項指定建立物件的種類,並通過複製這個原型建立新的物件 通俗的講就是根據乙個原型建立乙個新的物件 建立的方式實質就是拷貝原型自己 而且不需要知道新物件建立的細節 1 某些物件組合起來特別複雜,而重新建立費時又費力,此時通過拷貝能達到其目的 通過 說明問題 1 定義乙個協議 impo...
學習設計模式 原型設計模式
先想一下既然要建立新的例項,為什麼不直接使用 new 而要設計出乙個原型模式進行例項的複製呢?這是因為 有的時候,我們也會在不指定類名的前提下生成例項,例如像圖形編輯器中拖動現有的模型工具製作圖形的例項,這種是非常典型的生成例項的過程太過複雜,很難根據類來生成例項場景,因此需要根據現有的例項來生成新...