我正在研究jbehave场景。我的步骤使用switch语句。 可能有很多这样的标签。 这意味着每次我必须添加另一个case语句。
如何用OOP替换switch语句?
现在,我通过枚举区分制表符,因为只能从jbehave接收字符串。
但是我相信还有更优雅的方式。
当我在编辑器中打开出版物并转到“受众群体”标签
@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();
switch (enumTab){
case AUDIENCE:
taggingUi.goToAudienceTab();
break;
}
}
答案 0 :(得分:1)
我有时会使用Map来避免切换时间过长,例如像这样:
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();
}
这样,我可以轻松添加更多操作。每当我无法重新设计其余代码以使其更加面向对象时,我就会发现它非常有用。