當我看到prototype的時候,感覺特別熟悉,對,用過spring的同學都知道,配置spring bean的時候,其中有一項是scope配置,乙個是singleton乙個是prototype,對就是這個prototype。spring這裡就用到了原型設計模式
下面具體講一下:
什麼叫原型設計模式,通俗點就是轉殖,沒錯就是object裡的那個clone方法,假如有這麼乙個物件,現在怎麼用一般方法實現呢:
對就這樣,看起來很好理解,就是**也太多了,看起來就很low
用clone方法就可以直接轉殖了。 看起來很方便。
但是當用clone的時候,注意要轉殖的類要實現cloneable,不然拋異常。
而且這個方法涉及乙個深淺轉殖的問題,
這是什麼?
深轉殖就是跟原型除了長得一樣,但是是兩個完全不一樣的物件。
淺轉殖就是不僅長得一樣,引用位址都一樣。
舉個例子,你把sheep中加乙個物件,在用clone之後,前後用列印出位址看下,基本型別包含包裝型別以及string是相等的,但是你加的那個物件的位址不一樣,說明原生clone是淺拷貝。
要想實現深拷貝,實現方式有兩種,一種是序列化 一種是重寫clone
//深拷貝 - 方式1 通過物件的序列化實現 (推薦)
public object deepclone()
catch
(exception e)
finally
catch
(exception e2)
}}
//深拷貝 - 方式 2 使用clone 方法
@override
protected object clone()
throws clonenotsupportedexception
注意以後面試官問原生是深淺拷貝的時候可別打錯了呦~ 設計模式 拷貝和原型模式
我對於設計模式還是一知半解的,最近看了幾個設計模式,單例模式和工廠模式是比較基礎和簡單的,這裡我就不贅述了,但是他們是最為普遍的設計模式,不了解的小夥伴們還是去看看為好。關於拷貝,這篇文章寫得特別好,深入淺出。總結起來就是 類初始化的過程比作列印,拷貝的過程比作影印。類載入的過程很複雜,如果我們迴圈...
設計模式 原型模式介紹 原型模式的深拷貝問題
轉殖羊問題 有乙個羊,是乙個類,有對應的屬性,要求建立完全一樣的10隻羊出來。那麼實現起來很簡單,我們先寫出羊的類 public class sheep然後,建立10只一樣的羊,就在客戶端寫乙個 建立 原始羊 sheep sheep new sheep tom 1,白色 轉殖羊 sheep shee...
設計模式(五) 拷貝複製 原型模式
原型模式 prototype pattern 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。其實所謂的原型模式本質上是在勒種預留的對物件的複製介面。對於一些初始化資訊發生變化不大的情況下,可以採用clone的方式建立物件,不用每次都是重新初...