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