第1条:考虑用静态工厂方法代替构造函数。
例子:Boolean类的静态工厂方法:
public static Boolean valueOf(boolean b){
return (b?Boolean.True:Boolean.FALSE);
}
好处:
1、与构造函数不同,静态工厂方法具有名字。如BigInteger(int,int,Random)返回的BigInteger可能是素数,如果使用静态工厂方法BigInteger.probablePrime表达更清楚。
2、与构造函数不同,可以不用创建对象来调用方法。
3、与构造函数不同,他们可以返回一个原返回类型的子类型的对象。这项技术非常适合基于接口的框架结构
缺点:
1、类如果不含有共有的或者受保护的构造函数,就不能被子类化。
2、他们与其他的静态方法没有任何区别。目前流行的静态工厂方法的两个名字:
valueOf:常用的类型转换操作符
getInstance: