我学习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);
对我来说,这两个选项都相同,但是我在大项目中看到的第一个选项。
第一个选项的优势是什么?
有人可以散布光吗?
正如Sotirios Delimanolis在评论中所写的那样,第一个是静态工厂模式。使用此模式,由于无法访问构造函数,因此无法扩展类。
此外,静态工厂模式可以以其他方式使用,例如来控制创建的实例数,也可以返回不同类别的实例(通常应用相同的接口)。
一个私人用例是著名的单例图案。另一个是对象池。