原型模式

一、什么是原型模式

原型模式(Prototype Pattern)用于創(chuàng)建重復(fù)的對象,同時(shí)又能保證性能。它屬于創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對象的最佳方法。
在使用原型模式時(shí),我們需要首先創(chuàng)建一個(gè)原型對象,再通過復(fù)制這個(gè)原型對象來創(chuàng)建更多同類型的對象。一般這個(gè)原型對象的實(shí)例化很復(fù)雜,需要消耗很多的硬件資源或者數(shù)據(jù)資源。

二、為什么使用原型模式

現(xiàn)在一般會使用new關(guān)鍵字指定類名生成類的實(shí)例(PS:我們以前使用java.lang.Cloneable的一個(gè)很大原因是使用new創(chuàng)建對象的速度相對來說會慢一些,隨著JVM性能的提升,new的速度和Object的clone()方法的速度差不多了)。
但下面這些情況下,就需要根據(jù)現(xiàn)有的實(shí)例來生成新的實(shí)例:
1、對象種類繁多,無法將他們整合到一個(gè)類的時(shí)候;
2、難以根據(jù)類生成實(shí)例時(shí);
3、想解耦框架與生成的實(shí)例時(shí)。

三、原型模式的淺拷貝和深拷貝

3.1、淺拷貝

只拷貝基本數(shù)據(jù)類型,對于對象屬性拷貝其中的引用地址
實(shí)現(xiàn)步驟:
1、實(shí)現(xiàn)Cloneable接口
2、實(shí)現(xiàn)clone方法

淺拷貝clone方法.png

總結(jié):
淺拷貝:復(fù)制基本數(shù)據(jù)類型,引用類型沒有進(jìn)行復(fù)制

3.2、深拷貝

復(fù)制基本數(shù)據(jù)類型和引用類型
實(shí)現(xiàn)步驟:
1、實(shí)現(xiàn)Cloneable接口
2、實(shí)現(xiàn)clone方法

深拷貝clone方法.png

四、原型模式的優(yōu)缺點(diǎn)

4.1、優(yōu)點(diǎn)

1、抽象出共同點(diǎn),僅需要修改對象間的不同點(diǎn)
2、大大減少JVM創(chuàng)建對象的時(shí)間

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容