定義:
原型模式:用原型執行個體指定建立對象的種類,并且通過拷貝這些原型來建立新的對象
适用性:
當我們系統中有一些類,在使用的時候都有同樣需要大量的建立,而這樣的建立是複雜的而且是浪費CPU,記憶體資源的,為了解決這一問題,就出現了原型模式(深度克隆,淺克隆)
模式思想:
1. 通過使用同一的建立對象方案,盡量避免建立對象複雜過程代碼重複出現;
2. 為了節省CPU,記憶體資源,我們可以讓不同的類之間共享一些(業務上允許)資源,進而達到縮小占用記憶體空間;
3. 這樣的一類業務需求本來就具有一定的同一性,我們抽象出一個同一的抽象類(Protype,ICloneable)作為規範,讓有這樣需求的類實作他們,進而達到了結構同一。
模式圖:
模式示例:
原型抽象類:
具有原型屬性類:
特點:
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 原理;加載過程的。。。
【+加關注】。