創(chuàng)建類(lèi)的實(shí)例最常見(jiàn)的是new 除此外還可以使用靜態(tài)工廠方法,來(lái)封裝實(shí)例的細(xì)節(jié),并且能控制實(shí)例的數(shù)量,減輕jvm的堆棧中的壓力。
靜態(tài)工廠方法與用new語(yǔ)句調(diào)用的構(gòu)造方法相比,有以下區(qū)別:
1:構(gòu)造方法的名字必須與類(lèi)名相同。這一特性的優(yōu)點(diǎn)是符合Java語(yǔ)言的規(guī)范,缺點(diǎn)是類(lèi)的所有重載的構(gòu)造方法的名字都相同,不能從名字上區(qū)分每個(gè)
重載方法,容易引起混淆。靜態(tài)工廠方法的方法名可以是任意的,這一特性的優(yōu)點(diǎn)是可以提高程序代碼的可讀性,在方法名中能體現(xiàn)與實(shí)例有關(guān)的信息。
人人
eg:public class TottiStaticDemo{
private static final TottiStaticDemo demo = new TottiStaticDemo();
public static TottiStaticDemo getInstance(){
return demo;
}
public void outPutStatic(){
System.out.println("Test Static Factory Class!");
}
}
如果需要在其他類(lèi)中調(diào)用TottiStaticDemo類(lèi)中的outPutStatic方法,那么只需要使用如下語(yǔ)句即可:
TottiStaticDemo.getInstance().outPutStatic();而不必使用new關(guān)鍵字。
2:每次執(zhí)行new語(yǔ)句時(shí),都會(huì)創(chuàng)建一個(gè)新的對(duì)象。而靜態(tài)工廠方法每次被調(diào)用的時(shí)候,是否會(huì)創(chuàng)建一個(gè)新的對(duì)象完全取決于方法的實(shí)現(xiàn)。
女裝品牌排行榜
3:new語(yǔ)句只能創(chuàng)建當(dāng)前類(lèi)的實(shí)例,而靜態(tài)工廠方法可以返回當(dāng)前類(lèi)的子類(lèi)的實(shí)例,這一特性可以在創(chuàng)建松耦合的系統(tǒng)接口時(shí)發(fā)揮作用。
***靜態(tài)工廠方法最主要的特點(diǎn)是:每次被調(diào)用的時(shí)候,不一定要?jiǎng)?chuàng)建一個(gè)新的對(duì)象。利用這一特點(diǎn),靜態(tài)工廠方法可用來(lái)創(chuàng)建以下類(lèi)的實(shí)例。
<1> 單例類(lèi):只有惟一的實(shí)例的類(lèi)。
<2>枚舉類(lèi):實(shí)例的數(shù)量有限的類(lèi)。
<3>具有實(shí)例緩存的類(lèi):能把已經(jīng)創(chuàng)建的實(shí)例暫且存放在緩存中的類(lèi)。
<4>具有實(shí)例緩存的不可變類(lèi):不可變類(lèi)的實(shí)例一旦創(chuàng)建,其屬性值就不會(huì)被改變。
posted on 2011-04-21 09:23
墻頭草 閱讀(7711)
評(píng)論(2) 編輯 收藏