亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? static方法.txt

?? 創(chuàng)建類的實例的最常見的方式是用new語句調(diào)用類的構(gòu)造方法。在這種情況下
?? TXT
字號:
Java面向?qū)ο缶幊?靜態(tài)工廠方法 


Java面向?qū)ο缶幊? 靜態(tài)工廠方法


創(chuàng)建類的實例的最常見的方式是用new語句調(diào)用類的構(gòu)造方法。在這種情況下,程序可以創(chuàng)建類的任意多個實例,每執(zhí)行一條new語句,都會導(dǎo)致Java虛擬機的堆區(qū)中產(chǎn)生一個新的對象。假如類需要進一步封裝創(chuàng)建自身實例的細(xì)節(jié),并且控制自身實例的數(shù)目,那么可以提供靜態(tài)工廠方法。

例如Class實例是Java虛擬機在加載一個類時自動創(chuàng)建的,程序無法用new語句創(chuàng)建 java.lang.Class類的實例,因為Class類沒有提供public類型的構(gòu)造方法。為了使程序能獲得代表某個類的Class實例,在 Class類中提供了靜態(tài)工廠方法forName(String name),它的使用方式如下:

Class c=Class.forName("Sample"); //返回代表Sample類的實例

靜態(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)的信息。例如例程11-5的Gender類有兩個靜態(tài)工廠方法:getFemale()和getMale()。

例程11-5 Gender.java

public class Gender{

private String description;

private static final Gender female=new Gender("女");

private static final Gender male=new Gender("男");


private Gender(String description){this.description=description;}


public static Gender getFemale(){

return female;

}


public static Gender getMale(){

return male;

}

public String getDescription(){return description;}

}

這一特性的缺點是與其他的靜態(tài)方法沒有明顯的區(qū)別,使用戶難以識別類中到底哪些靜態(tài)方法專門負(fù)責(zé)返回類的實例。為了減少這一缺點帶來的負(fù)面影響,可以在為靜態(tài)工廠方法命名時盡量遵守約定俗成的規(guī)范,當(dāng)然這不是必需的。目前比較流行的規(guī)范是把靜態(tài)工廠方法命名為 valueOf或者getInstance。

l valueOf:該方法返回的實例與它的參數(shù)具有同樣的值,例如:

Integer a=Integer.valueOf(100); //返回取值為100的Integer對象

從上面代碼可以看出,valueOf()方法能執(zhí)行類型轉(zhuǎn)換操作,在本例中,把int類型的基本數(shù)據(jù)轉(zhuǎn)換為Integer對象。

l getInstance:返回的實例與參數(shù)匹配,例如:

//返回符合中國標(biāo)準(zhǔn)的日歷

Calendar cal=Calendar.getInstance(Locale.CHINA);

(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ā)揮作用,參見本章11.3.5節(jié)(松耦合的系統(tǒng)接口)。

靜態(tài)工廠方法最主要的特點是:每次被調(diào)用的時候,不一定要創(chuàng)建一個新的對象。利用這一特點,靜態(tài)工廠方法可用來創(chuàng)建以下類的實例。

l 單例類:只有惟一的實例的類。

l 枚舉類:實例的數(shù)量有限的類。

l 具有實例緩存的類:能把已經(jīng)創(chuàng)建的實例暫且存放在緩存中的類。

l 具有實例緩存的不可變類:不可變類的實例一旦創(chuàng)建,其屬性值就不會被改變。

在下面幾節(jié),將結(jié)合具體的例子,介紹靜態(tài)工廠方法的用途。

11.3.1 單例(singleton)類
單例類是指僅有一個實例的類。在系統(tǒng)中具有惟一性的組件可作為單例類,這種類的實例通常會占用較多的內(nèi)存,或者實例的初始化過程比較冗長,因此隨意創(chuàng)建這些類的實例會影響系統(tǒng)的性能。


Tips

熟悉Struts和Hibernate軟件的讀者會發(fā)現(xiàn),Struts框架的ActionServlet類就是單例類,此外,Hibernate的SessionFactory和Configuration類也是單例類。



例程11-6的GlobalConfig類就是個單例類,它用來存放軟件系統(tǒng)的配置信息。這些配置信息本來存放在配置文件中,在GlobalConfig類的構(gòu)造方法中會從配置文件中讀取配置信息,并把它存放在properties屬性中。

例程11-6 GlobalConfig.java

import java.io.InputStream;

import java.io.FileInputStream;

import java.io.IOException;

import java.util.Properties;


public class GlobalConfig {

private static final GlobalConfig INSTANCE=new GlobalConfig();

private Properties properties = new Properies();

private GlobalConfig(){

try{

//加載配置信息

InputStream in=getClass().getResourceAsStream("myapp.properties");

properties.load(in);

in.close();

}catch(IOException e){throw new RuntimeException("加載配置信息失敗");}

}

public static GlobalConfig getInstance(){ //靜態(tài)工廠方法

return INSTANCE;

}

public Properties getProperties() {

return properties;

}

}

實現(xiàn)單例類有兩種方式:

(1)把構(gòu)造方法定義為private類型,提供public static final類型的靜態(tài)變量,該變量引用類的惟一的實例,例如:

public class GlobalConfig {

public static final GlobalConfig INSTANCE =new GlobalConfig();

private GlobalConfig() {…}


} 

這種方式的優(yōu)點是實現(xiàn)起來比較簡捷,而且類的成員聲明清楚地表明該類是單例類。

(2)把構(gòu)造方法定義為private類型,提供public static類型的靜態(tài)工廠方法,例如:

public class GlobalConfig {

private static final GlobalConfig INSTANCE =new GlobalConfig();

private GlobalConfig() {…

}

public static GlobalConfig getInstance(){return INSTANCE;}


}

這種方式的優(yōu)點是可以更靈活地決定如何創(chuàng)建類的實例,在不改變GlobalConfig類的接口的前提下,可以修改靜態(tài)工廠方法getInstance()的實現(xiàn)方式,比如把單例類改為針對每個線程分配一個實例,參見例程11-7。

例程11-7 GlobalConfig.java

package uselocal;

public class GlobalConfig {

private static final ThreadLocal<GlobalConfig> threadConfig=

new ThreadLocal<GlobalConfig>();

private Properties properties = null;

private GlobalConfig(){…}


public static GlobalConfig getInstance(){

GlobalConfig config=threadConfig.get();

if(config==null){

config=new GlobalConfig();

threadConfig.set(config);

}

return config;

}

public Properties getProperties() {return properties; }

}

以上程序用到了ThreadLocal類,關(guān)于它的用法參見第13章的13.14節(jié)(ThreadLocal類)。

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲国产奇米99| 亚洲一区二区三区爽爽爽爽爽| 国产亚洲一区二区三区四区| 一区二区三区四区av| 精品亚洲porn| 欧美精品乱码久久久久久按摩| 国产欧美日韩三级| 麻豆一区二区99久久久久| 555夜色666亚洲国产免| 国产精品丝袜91| 久久国产精品99精品国产| 在线免费不卡视频| 国产精品久久毛片av大全日韩| 久久精品国产99国产| 欧美裸体bbwbbwbbw| 一区二区三区欧美视频| 成人黄色大片在线观看| 久久久三级国产网站| 精品一二三四区| 日韩精品一区二| 美女诱惑一区二区| 3d动漫精品啪啪一区二区竹菊| 亚洲一区二区三区免费视频| 99麻豆久久久国产精品免费| 欧美韩国日本综合| 国产精品一区二区在线观看网站| 4hu四虎永久在线影院成人| 亚洲国产裸拍裸体视频在线观看乱了| 91蜜桃传媒精品久久久一区二区| 国产视频视频一区| 国产成人福利片| 久久精品一区二区| 丰满亚洲少妇av| 亚洲国产精华液网站w | 精品久久人人做人人爱| 亚洲大片免费看| 欧美日韩一区二区电影| 天堂va蜜桃一区二区三区漫画版| 欧美色综合久久| 午夜亚洲福利老司机| 欧美精品在欧美一区二区少妇| 亚洲高清视频在线| 欧美一卡二卡在线| 精品一区二区三区在线播放视频 | 日本伦理一区二区| 亚洲午夜精品17c| 欧美卡1卡2卡| 国产综合久久久久久鬼色| 精品乱人伦小说| 成人免费va视频| 亚洲欧洲av在线| 欧美主播一区二区三区美女| 丝袜美腿亚洲一区二区图片| 欧美不卡在线视频| 成人激情电影免费在线观看| 一区二区在线免费观看| 91麻豆精品久久久久蜜臀| 久久99精品国产| 国产精品拍天天在线| 91极品美女在线| 亚洲成av人**亚洲成av**| 精品国产制服丝袜高跟| 白白色 亚洲乱淫| 图片区小说区区亚洲影院| 亚洲精品一区二区三区在线观看| 久久精品久久99精品久久| 中文文精品字幕一区二区| 一本大道久久a久久精品综合| 天堂一区二区在线| 欧美极品少妇xxxxⅹ高跟鞋 | 免费不卡在线视频| 欧美精彩视频一区二区三区| 欧美日韩国产一区| 国产成+人+日韩+欧美+亚洲| 亚洲美女一区二区三区| 26uuu精品一区二区| 色av一区二区| 国产激情91久久精品导航| 亚洲精品欧美综合四区| 久久综合av免费| 欧美午夜免费电影| 成人av资源在线| 美女在线视频一区| 一区二区三区在线看| 久久先锋影音av鲁色资源网| 欧洲视频一区二区| 国产成人综合网站| 蜜臀久久久久久久| 亚洲激情综合网| 国产欧美日韩在线| 日韩欧美电影在线| 欧美在线免费视屏| 99久久婷婷国产精品综合| 蜜桃久久久久久| 亚洲.国产.中文慕字在线| 亚洲欧洲色图综合| 国产日韩欧美精品电影三级在线 | 欧美在线视频全部完| 9l国产精品久久久久麻豆| 狠狠色丁香久久婷婷综合_中| 亚洲成人免费av| 夜夜揉揉日日人人青青一国产精品| 国产调教视频一区| 欧美xfplay| 欧美成人精精品一区二区频| 欧美人牲a欧美精品| 欧美性xxxxxxxx| 色狠狠色狠狠综合| 91久久精品一区二区三区| 成人午夜看片网址| 国产91丝袜在线观看| 国产九九视频一区二区三区| 国产一区二区精品在线观看| 全国精品久久少妇| 麻豆精品一区二区av白丝在线| 亚洲成av人片观看| 亚洲成a人在线观看| 婷婷国产在线综合| 日韩精品电影在线观看| 日韩av一级电影| 老司机午夜精品99久久| 精品亚洲成av人在线观看| 国产精品一区二区在线观看网站| 精品一区免费av| 国产精品一区久久久久| jvid福利写真一区二区三区| 91污在线观看| 在线观看视频一区二区| 777a∨成人精品桃花网| 日韩精品一区二区三区中文精品| 日韩精品一区二区三区在线观看| 精品成人一区二区三区四区| 国产校园另类小说区| 最新成人av在线| 一区二区三区四区不卡在线| 亚洲福中文字幕伊人影院| 日韩高清不卡在线| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕va一区二区三区| 亚洲国产精品av| 亚洲精品午夜久久久| 日本伊人精品一区二区三区观看方式| 久久国产精品区| 波多野结衣中文字幕一区| 欧美亚洲尤物久久| 精品国产制服丝袜高跟| 亚洲视频图片小说| 视频在线观看国产精品| 高清久久久久久| 欧美性videosxxxxx| 久久色.com| 有码一区二区三区| 国产一区二区三区高清播放| 91老师片黄在线观看| 欧美一卡2卡3卡4卡| 国产精品国产三级国产普通话三级| 亚洲高清在线精品| 成人精品一区二区三区中文字幕 | 一区二区国产盗摄色噜噜| 日韩影院精彩在线| 成人午夜短视频| 日韩三级.com| 亚洲午夜视频在线| 成人免费观看视频| 欧美一区二区在线不卡| 亚洲欧美日本韩国| 国产麻豆视频一区| 8x8x8国产精品| 亚洲免费观看高清完整版在线观看 | 欧美手机在线视频| 久久久三级国产网站| 亚洲成a人片在线不卡一二三区| 国产成人亚洲精品青草天美| 777午夜精品视频在线播放| 亚洲欧美视频在线观看视频| 国产美女视频91| 欧美一级一级性生活免费录像| 亚洲美女屁股眼交3| 国产成人亚洲精品狼色在线| 91精品麻豆日日躁夜夜躁| 亚洲精品菠萝久久久久久久| 国产成人av一区二区| 日韩一级成人av| 首页国产欧美久久| 欧美性xxxxxx少妇| 亚洲女同一区二区| 成人av在线资源网站| 国产亚洲污的网站| 国产在线视频一区二区三区| 欧美挠脚心视频网站| 亚洲午夜电影网| 欧美性三三影院| 亚洲综合视频网| 91视频免费观看| 亚洲男女一区二区三区| 成人一级黄色片| 国产欧美精品一区| 成人午夜激情片| 国产精品久久久久久久久晋中| 粉嫩一区二区三区在线看|