在工厂方法中使用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必须保留旧值以使客户端兼容......对我来说没有意义。
我想知道你对这个问题有什么看法?