Чтобы решить аналогичную проблему, я однажды реализовал шаблон стратегии в качестве перечисления. Для каждой стратегии вы создаете новое значение для перечисления, инкапсулируя код в методе перечисления:
public enum Strategy {
FIRST_STRATEGY {
public String process(String input) {
// Implementation for first strategy
return null;
}
},
SECOND_STRATEGY {
public String process(String input) {
// Implementation for second strategy
return null;
}
};
public abstract String process(String input);
}
Вы можете применить выбранную стратегию в зависимости от значения перечисления, фактически удалив цепочку операторов if / else:
Strategy chosenStrategy = Strategy.FIRST_STRATEGY;
String output = chosenStrategy.process(input);
Это решение, которое я применил для моей проблемы, возможно, оно не является оптимальным или более объектно-ориентированным. Вы должны выбрать правильное решение для вашей проблемы, но я надеюсь, что мой опыт может помочь.