我学习Java并想知道下面的类初始化实现之间是否有任何区别。
[选项1]
public class LaunchHandler implements SomeItf{
public static LaunchHandler create(ArrayList<String> params){
LaunchHandler self = new LaunchHandler(params);
return self;
}
private LaunchHandler(ArrayList<String> params){
mParams = params;
}
}
所以我称之为:
SomeItf launch = LaunchHandler.create(params);
[选项2]
public class LaunchHandler implements SomeItf{
public LaunchHandler(ArrayList<String> params){
mParams = params;
}
}
我称之为:
SomeItf launch = new LaunchHandler(params);
对我来说,两个选项都是相同的,但我在大项目中看到了第一个选项。
第一选项有什么优势?
有人可以传播光吗?
答案 0 :(得分:2)
Sotirios Delimanolis在评论中写道,第一个是静态工厂模式。使用此模式,您的类无法扩展,因为无法访问构造函数。
此外,静态工厂模式可以以其他方式使用,例如,控制创建的实例数,或返回不同类的实例(通常应用相同的接口)。
一个私人用例是着名的Singleton模式。 另一个是对象池。