1、Advantages
- 静态工厂方法不像构造器,他们有名字
- 程序员都知道提供两个构造方法有限制,参数列表必须在顺序方面不同的,当使用构造方法的时候就不会出现这个问题。
- 不会像构造方法一样,每次执行都创建一个新对象
- 静态工厂方法的第三个优点是,与构造函数不同,它们可以返回其返回类型的任何子类型的对象
- 作为输⼊入参数的函数,返回对象所属的类会随着调⽤用的不同⽽而不同。
- 例如
enumSet
,当参数为64个或者更少的时候,调用静态方法返回RegularEnumSet
实例,当参数为65或者更多的时候,调用静态方法返回JumboEnumSet
实例
- 例如
- 在使⽤包含了了⽅法的类时,返回对象所属的类不必事先存在。
2、Disadvantages
- 仅提供静态工厂方法的主要限制是没有公共或受保护构造函数的类是不能被子类化。
- 静态工厂方法很难被程序员找到。
- 文中提供了部分参考方法名称。如:
from
,of
,valueOf
,instance of
,getInstance
,create
,newInstance
,getType
,newType
,type
- 文中提供了部分参考方法名称。如:
3、Summary
- 通常,静态工厂方法和公共构造方法都有他们的用途,了解他们之间的优点,通常静态方法是优选的,在没有首先考虑静态工厂的情况下,应避免习惯性思维提供公共构造方法。