Лучше ли использовать 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
придется сохранить старые значения, чтобы сделать клиент совместимым ... не имеет смысла для меня.
Я хотел бы знать, что вы думаете по этому вопросу?