我学习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);
对于我来说这两个选项都是一样的,但是第一个选项我在大项目中看到了。
第一选项的优点是什么?
有人能传播光吗?
你必须有一切的工厂方法。 [企业质量代码,在这里。](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition) –
其他重复:http://stackoverflow.com/questions/194496/static-factory-methods-vs-instance-normal-构造函数http://softwareengineering.stackexchange.com/questions/240351/using-a-simple-static-factory-vs-instantiating-directly-new-thing-vs-factor – assylias