Во-первых, определите, с каким типом клиента (т.е. с каким значением CustomerType) вы имеете дело.Имея это в виду, вы можете использовать оператор switch
для определения обработки (и в идеале вы можете перенести обработку каждого типа в отдельный метод).Важно отметить, что использование такого оператора switch может затем вызвать ошибку времени сборки, если какие-либо CustomerTypes отсутствуют - лучше уловить эту проблему во время сборки, чем узнавать через некоторое время из неясного отчета об ошибке во время выполнения!
public String check(String customerType, String customerDetails, String addressDetails)
{
try {
CustomerType customerType = CustomerType.valueOf(type);
} catch (IllegalArgumentException e) {
return null;
}
// Java12 - Use Switch Expressions
String result =
switch (customerType) {
case CUSTOMER1 -> formatCustomer1(customerDetails, addressDetails);
case CUSTOMER2 -> formatCustomer2(customerDetails, addressDetails);
// etc
}
// Up to Java 11 - Use normal Switch statement
String result = null;
switch (customerType) {
case CUSTOMER1: result = formatCustomer1(customerDetails, addressDetails);
break;
case CUSTOMER2: result = formatCustomer2(customerDetails, addressDetails);
break;
// etc
}
Выражения-переключатели Java12 имеют несколько преимуществ:
1) Более чистый синтаксис (не в последнюю очередь, без операторов "break"!)
2) Ошибка времени компиляцииесли не все перечисления обрабатываются.
Однако, даже у переключателя, предшествующего Java12, есть:
1) Ваша среда IDE, вероятно, предупредит вас, если какие-либо значения перечисления отсутствуют
2) Вы можете использовать автоматизированные инструменты, которые будут запускать сбой во время сборки, если значения перечисления отсутствуют
Вы также можете пойти дальше и добавить методы в само перечисление CustomerType для вызова этих методов «форматирования».(хотя лично я думаю, что это может зайти слишком далеко).