在工厂方法中使用enum
或String
分派到正确的对象来创建更好吗?static
示例String
:
public static Car createCar(String carName){
if(carName.equals("Ferrari")){
return new Ferrari();
}
else if(carName.equals("Porsche")){
return new Porsche();
}
....
}
示例enum
:
public static Car createCar(CarEnum carEnum){
if(CarEnum.FERRARI.equals(carEnum)){
return new Ferrari();
}
else if(CarEnum.PORSCHE.equals(carEnum)){
return new Porsche();
}
....
}
目前,据我说:
使用的好处enum
:
- 避免用户使用未经处理的
carName
.
使用的缺点Enum
:
增加依赖关系,因为更改为enum
(例如FERRARI
成为ENZO_FERRARI
)将需要在客户端进行修改。但是,String
我们可以重定向Ferrari
到Enzo Ferrari
实例而无需重新编译客户端代码。当然,我们可以为使用旧enum
值的客户端做同样的事情FERRARI
,ENZO-FERRARI
enum
但对我来说,这意味着enum
必须保留旧值以使客户端兼容......对我来说没有意义。
我想知道你对这个问题有什么看法?