- 使用静态工厂来提供一个类的客户端
public static Boolean valueOf(boolean b){
return b?Boolean.True:Boolean.False;
}
- 静态工厂方法四大优点:
它们拥有名称:命名恰当的静态工厂方法更容易使用。而使用构造器需要查看类源码,确定应该调用具有哪些参数的构造器。
BigInteger.probablePrime(bitLength, rnd);
不必在每次调用它们时创建一个新对象:调用静态工厂方法返回的很可能是一个缓存的对象,而不用重复创建新的对象,极大的削减成本。
它们返回原类型任何子类型对象:通过调用静态工厂方法返回的对象的类可以是非公有的,并且可以根据方法参数不同产生不同的类的对象。(隐藏实现类)
在创建参数化类型的的时候,它们使代码更见简洁。
缺点:如果我们在类中将构造函数设为private,只提供静态工厂方法来构建对象,那么我们将不能通过继承扩展该类。但这一缺点促使程序员更多使用复合而非继承。