Длинные последовательности if
операторов не являются всегда плохой вещью.Если вы хотите сделать это правильным способом , вам нужно определить отображение ваших опций на их "обработчики" в структуре данных, а не жестко кодировать их в операторах if.
Выможет определить интерфейс с одним методом и иметь A
, B
и C
(в вашем примере) для его реализации:
public interface OptionHandler { // For lack of a better name...
void handleOption(); // You could pass parameters here
}
Затем вы можете определить карту параметров для их обработчиков:
private final Map<Option, OptionHandler> optionHandlers = new HashMap<Option, OptionHandler>();
Затем вы замените свою последовательность if
операторов на что-то вроде:
for (Option option : options) {
if (!option.isOn()) {
// Skip off option
continue;
}
OptionHandler handler = optionHandlers.get(option);
if (handler != null) {
handler.handleOption();
}
}