原型模式數組
主要用於對象的複製,實現一個接口(實現Cloneable接口),重寫一個方法(重寫Object類中的clone方法),即完成了原型模式。性能
原型模式中的拷貝分爲「淺拷貝」和「深拷貝」:spa
淺拷貝:對值類型的成員變量進行值的複製,對引用類型的成員變量只複製引用,不復制引用的對象。對象
深拷貝:對值類型的成員變量進行值的複製,對引用類型的成員變量也進行引用對象的複製。接口
(Object類中clone方法只會拷貝對象中的基本數據類型的值,對於數據中、容器對象、引用對象等都不會拷貝,這就是淺拷貝。若是要實現深拷貝,必須將原型模式中的數組、容器對象、引用對象等另行拷貝。)內存
原型模式的優勢:原型
1)若是建立新的對象比較複雜時,能夠利用原型模式簡化對象的建立過程。容器
2)使用原型模式建立對象比直接new一個對象在性能上要好得多,由於Object類的clone方法是一個本地方法,它直接操做內存中的二進制流,特別是複製大對象時,性能的差異很是明顯。變量
原型模式的適用場景:循環
由於以上優勢,因此在須要重複地建立類似對象時能夠考慮使用原型模式。好比須要在一個循環體內建立對象,假如對象建立過程比較複雜或者循環次數不少的話,使用原型模式不但能夠簡化建立過程,並且能夠使系統的總體性能提升不少。