石家莊網(wǎng)站建設(shè)關(guān)于原型模式的認(rèn)知
今天尚武科技的網(wǎng)站建設(shè)工程師將為大家?guī)黻P(guān)于網(wǎng)站建設(shè)中常見的模型講解——原型模式。原型模式主要針對(duì)拷貝創(chuàng)建對(duì)象類型,讓我們?cè)僮鐾?jí)對(duì)象可以快速的拷貝。下面我們就一起詳細(xì)的了解一下什么是原型模式。
原型模式(PrototypePattern)
定義:用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過拷貝這些原型創(chuàng)建新的對(duì)象。
原型模式通用代碼:
原型模式實(shí)際上就是實(shí)現(xiàn)Cloneable接口,重寫clone()方法。
使用原型模式的優(yōu)點(diǎn):
●性能優(yōu)良
原型模式是在內(nèi)存二進(jìn)制流的拷貝,要比直接new一個(gè)對(duì)象性能好很多,特別是要在一個(gè)循環(huán)體內(nèi)產(chǎn)生大量的對(duì)象時(shí),原型模式可以更好地體現(xiàn)其優(yōu)點(diǎn)。
●逃避構(gòu)造函數(shù)的約束
這既是它的優(yōu)點(diǎn)也是缺點(diǎn),直接在內(nèi)存中拷貝,構(gòu)造函數(shù)是不會(huì)執(zhí)行的。
使用場景:
●資源優(yōu)化場景
類初始化需要消化非常多的資源,這個(gè)資源包括數(shù)據(jù)、硬件資源等。
●性能和安全要求的場景
通過new產(chǎn)生一個(gè)對(duì)象需要非常繁瑣的數(shù)據(jù)準(zhǔn)備或訪問權(quán)限,則可以使用原型模式。
●一個(gè)對(duì)象多個(gè)修改者的場景
一個(gè)對(duì)象需要提供給其他對(duì)象訪問,而且各個(gè)調(diào)用者可能都需要修改其值時(shí),可以考慮使用原型模式拷貝多個(gè)對(duì)象供調(diào)用者使用。
淺拷貝和深拷貝:
淺拷貝:Object類提供的方法clone只是拷貝本對(duì)象,其對(duì)象內(nèi)部的數(shù)組、引用對(duì)象等都不拷貝,還是指向原生對(duì)象的內(nèi)部元素地址,這種拷貝就叫做淺拷貝,其他的原始類型比如int、long、char、string(當(dāng)做是原始類型)等都會(huì)被拷貝。
注意:使用原型模式時(shí),引用的成員變量必須滿足兩個(gè)條件才不會(huì)被拷貝:一是類的成員變量,而不是方法內(nèi)變量;二是必須是一個(gè)可變的引用對(duì)象,而不是一個(gè)原始類型或不可變對(duì)象。
深拷貝:對(duì)私有的類變量進(jìn)行獨(dú)立的拷貝
如:thing.arrayList=(ArrayList<String>)this.arrayList.clone();
以上就是石家莊做網(wǎng)站的尚武科技公司為大家?guī)淼年P(guān)于原型模式的相關(guān)介紹,希望大家能可以從中學(xué)到你想要知道的任何關(guān)于網(wǎng)站建設(shè)的知識(shí)點(diǎn)。