天天看點

設計模式(五)(Protype Pattern)原型模式

定義:

  原型模式:用原型執行個體指定建立對象的種類,并且通過拷貝這些原型來建立新的對象

适用性:

當我們系統中有一些類,在使用的時候都有同樣需要大量的建立,而這樣的建立是複雜的而且是浪費CPU,記憶體資源的,為了解決這一問題,就出現了原型模式(深度克隆,淺克隆)

模式思想:

1.  通過使用同一的建立對象方案,盡量避免建立對象複雜過程代碼重複出現;

2.  為了節省CPU,記憶體資源,我們可以讓不同的類之間共享一些(業務上允許)資源,進而達到縮小占用記憶體空間;

3.  這樣的一類業務需求本來就具有一定的同一性,我們抽象出一個同一的抽象類(Protype,ICloneable)作為規範,讓有這樣需求的類實作他們,進而達到了結構同一。

模式圖:

設計模式(五)(Protype Pattern)原型模式

模式示例:

原型抽象類: 

具有原型屬性類:

特點:

Protype抽象類特點:

就有一個抽象接口Clone,傳回值T(object,盡量使用泛型,避免加壓包)

具有原型屬性的一些類特點:

都實作了Protype抽象類,都有自己制定規則的Clone方法,内部都采用了符合業務需求的克隆方案(深度克隆還是采用淺克隆,要依據業務來定)。

 當然.NET系統中葉提供了類似的接口類ICloneable,并提供了MemberwiseClone()淺克隆方法。

深克隆方案也有:反序列化、反射、new等。

基礎才是程式設計人員應該深入研究的問題,比如:

1)List/Set/Map内部組成原理|差別

2)mysql索引存儲結構&如何調優/b-tree特點、計算複雜度及影響複雜度的因素。。。

3)JVM運作組成與原理及調優

4)Java類加載器運作原理

5)Java中GC過程原理|使用的回收算法原理

6)Redis中hash一緻性實作及與hash其他差別

7)Java多線程、線程池開發、管理Lock與Synchroined差別

8)Spring IOC/AOP 原理;加載過程的。。。

【+加關注】。

繼續閱讀