設計模式:原型模式
什么是原型模式?
原型模式(英文:Prototype Pattern),通過“復制”一個已經(jīng)存在的實例來返回新的實例,而不是新建實例。

一句話歸納
拔一根猴毛,吹出千萬個。
代碼示例
眾所周知,在中國四大名著《西游記》里孫悟空,本領高強,上天遁地,無所不能,他有一個本領就是“拔一根猴毛,吹出千萬個”。

適用性
以下場景我建議你考慮使用:
類的初始化需要消耗很多資源;
構造函數(shù)比較復雜的時候;
循環(huán)體中產(chǎn)生大量對象的時候;
new 產(chǎn)生對象時需要大量繁瑣的工作時候(權限、數(shù)據(jù)準備等 );
一個對象有多個修改者的時候;
局限性
以下場景我建議你謹慎使用:
必須實現(xiàn)Cloneable接口;
對現(xiàn)有類進行改造的時候;
要使用clone方法,類的成員變量不能加final關鍵字;
淺拷貝和深拷貝的問題。
深克隆和淺克隆
淺拷貝:只是拷貝本對象,其對象內(nèi)部的數(shù)組、引用對象等都不拷貝,還是指向本對象的內(nèi)部元素地址。
深拷貝:你修改你的,我修改我的,不相互影響。
clone()方法的原理是從內(nèi)存(具體來講是堆內(nèi)存)以二進制流的方式進行拷貝,重新分配一個內(nèi)存塊,所以構造器沒有執(zhí)行。
與通過一個類的實例化對象不同的是,原型模式是通過拷貝一個現(xiàn)有對象生成對象,淺拷貝是通過clone()方法,深拷貝是通過實現(xiàn)Serializable讀取二進制流。

寫在最后
最后,好兄弟,記得點贊,關注,謝謝。

標簽: