这里讲的静态工厂方法和设计模式中的工厂方法不同。
类可以通过静态工厂方法来提供它的客户端,而不是通过构造器。这样有以下几个优势:
1、它们有名称
当一个类需要多个带有相同签名的构造器时,就用静态工厂方法代替构造器(参数类型顺序不同的多个构造器),并慎重地选择名称以便突出它们之间的区别。
2、不必在每次调用它们的时候都创建一个新对象
3、可以返回原返回类型的任何子类型的对象
这样在选择返回对象的类时就有了很大的灵活性,这种灵活性的一种应用是,API可以返回对象,同时又不会使对象的类变成公有的。以这种方式隐藏实现类会使API变得非常简洁。这种技术适用于基于接口的框架,因为有这种框架,接口为静态工厂方法提供了自然返回类型。接口不能有静态方法。按照惯例,接口Type的静态工厂方法被放在一个名为Types的不可实例化的类中。例如Java Collections Framework。
4、在创建参数化类型实例的时候,它们是代码变得更加简洁