Я иногда использовал карту, чтобы избежать очень длинных переключений, например, вот так:
private final Map<TaggingUiTabs, Runnable> actionMap;
public MyStepsClass() {
actionMap.put(TaggingUiTabs.AUDIENCE, () -> taggingUi.goToAudienceTab());
actionMap.put(TaggingUiTabs.OTHER_TAB, () -> taggingUi.goToOtherTab());
}
@When("I open publication in Editor and go to $tab tab")
public void openEditorAndGoToTab(String tab){
TaggingUiTabs enumTab = EnumTextMatcher.matchEnum(tab,
TaggingUiTabs.getAllTabs());
editorWindow.goToTaggingUi();
actionMap.get(enumTab).run();
}
Таким образом, я могу легко добавить больше действий.Я нахожу это очень полезным всякий раз, когда я не могу изменить дизайн остального кода, чтобы он был более объектно-ориентированным.