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