java 核心技术-12版 卷Ⅰ- 4.4.4 工厂方法
原文
静态方法还有另外一种常见的用途。类似LocalDate 和NumberFormat的类使用静态工厂方法(factory method)来构造对象。你已经见过工厂方法LocalDate.now很 LocalDate.of 。可以如下得到不同样式的格式化对象:
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%
补充:作者是美国人,所以他使用此方法默认输出$0.10,在中国,中文环境下,默认输出¥0.10 。这里需要知道,默认输出的与计算机的地区和语言有关。
为什么NumberFormat类不使用构造器来创建对象呢?这有两个原因:
无法为构造器命名。构造器的名字总是要与类名相同。但是,这里希望有两个不同的名字,分别得到货币实例和百分比实例。
使用构造器时,无法改变所构造对象的类型。而工厂方法实际上将返回DecimalFormat类的对象,这是继承NumberFormat的一个子类(有关继承的更多详细内容请参见第5章)。