java 核心技術(shù)-12版 卷Ⅰ- 4.4.4 工廠方法
原文
靜態(tài)方法還有另外一種常見(jiàn)的用途。類(lèi)似LocalDate 和NumberFormat的類(lèi)使用靜態(tài)工廠方法(factory method)來(lái)構(gòu)造對(duì)象。你已經(jīng)見(jiàn)過(guò)工廠方法LocalDate.now很 LocalDate.of ??梢匀缦碌玫讲煌瑯邮降母袷交瘜?duì)象:
NumberFormat currencyInstance = NumberFormat.getCurrencyInstance();
NumberFormat percentInstance = NumberFormat.getPercentInstance();
double x = 0.1 ;
System.out.println(currencyInstance.format(x)); // print $0.10?
System.out.println(percentInstance.format(x)); // print 10%
補(bǔ)充:作者是美國(guó)人,所以他使用此方法默認(rèn)輸出$0.10,在中國(guó),中文環(huán)境下,默認(rèn)輸出¥0.10 。這里需要知道,默認(rèn)輸出的與計(jì)算機(jī)的地區(qū)和語(yǔ)言有關(guān)。
為什么NumberFormat類(lèi)不使用構(gòu)造器來(lái)創(chuàng)建對(duì)象呢?這有兩個(gè)原因:
無(wú)法為構(gòu)造器命名。構(gòu)造器的名字總是要與類(lèi)名相同。但是,這里希望有兩個(gè)不同的名字,分別得到貨幣實(shí)例和百分比實(shí)例。
使用構(gòu)造器時(shí),無(wú)法改變所構(gòu)造對(duì)象的類(lèi)型。而工廠方法實(shí)際上將返回DecimalFormat類(lèi)的對(duì)象,這是繼承NumberFormat的一個(gè)子類(lèi)(有關(guān)繼承的更多詳細(xì)內(nèi)容請(qǐng)參見(jiàn)第5章)。