静态工厂方法,本质上就是用静态方法返回类的一个实例。通过把构造方法封装起来,只有类内才能进行调用,而类外部不能知道相关构造方法的细节,只能通过静态方法进行调用。直观来讲就是把A a = new A() 转变为A a = A.createA()。优点有以下几点:比起构造方法来说,静态方法由于有名字更为直观;当创建对象比较复杂的时候,使用可以通过传入不同的参数来完成对不同对象的创建,也包括该类的子类实例,而这些信息对于调用者来说是隐藏的,这个特性在Java源码中被经常用到;当对象的创建比较复杂的时候,比如一些连接的创建,可以把这些初始化工作交给静态工厂方法。常见的几个静态工厂方法有:String.valueOf(), Optional.of(),单例模式中获得当前单例的方法。下面是一个简单的例子。public class A { private String a; public static A createA(String a) { // TODO 这里也可以加入一些其他工作 return new A(a); } } String a = "abc"; A a = A.create(a);
静态工厂方法,本质上就是用静态方法返回类的一个实例。通过把构造方法封装起来,只有类内才能进行调用,而类外部不能知道相关构造方法的细节,只能通过静态方法进行调用。直观来讲就是把
A a = new A()
转变为A a = A.createA()
。优点有以下几点:比起构造方法来说,静态方法由于有名字更为直观;当创建对象比较复杂的时候,使用可以通过传入不同的参数来完成对不同对象的创建,也包括该类的子类实例,而这些信息对于调用者来说是隐藏的,这个特性在Java源码中被经常用到;当对象的创建比较复杂的时候,比如一些连接的创建,可以把这些初始化工作交给静态工厂方法。
常见的几个静态工厂方法有:
String.valueOf()
,Optional.of()
,单例模式中获得当前单例的方法。下面是一个简单的例子。