对于一个类而言,其它类要想获取该类的实例,该类必须要提供一个公有构造器。
使用静态工厂方法代替构造器的优点:
静态工厂方法可以通过方法名称准确描述返回的实例对象
在一个类中,可能会重载构造器,提供多个构造器共使用,构造器之间参数列表不同,有时候会难以区分,导致可能调用错误的构造器。使用静态工厂方法,通过方法名称可以准确描述要返回的实例的特征。
调用静态工厂方法时不需要每一次都要创建一个新的实例对象
静态工厂方法能够为重复的调用返回相同对象,从而避免创建不必要的重复对象。可以通过预先创建好实例或者将创建的实例缓存起来,需要的时候,直接返回即可。如果通过构造器的话,每次都要创建新的实例对象。
静态工厂方法可以返回原类型的任何子类型对象
通过接口来引用被调用的对象,而不是通过实现类来引用被返回的对象,这是一种良好的编程习惯。
静态工厂方法使得创建参数化类型实例时候更简洁
但参数很多很长时,通过构造器,可能会写两次参数
通过静态工厂方法,编译器会自动找到类型参数,避免写很长的参数。