在我的程序中,我需要检查变量是否等于1,2或3,并根据结果执行不同的方法:
if (phase.equals("1")) {
PhaseOne.performPhase(inputParser.getSource(), inputParser.getTarget());
} else if (phase.equals("2")) {
PhaseTwo.performPhase(inputParser.getSource(), inputParser.getTarget());
} else {
PhaseThree.performPhase(inputParser.getSource(), inputParser.getTarget());
}
Run Code Online (Sandbox Code Playgroud)
这段代码非常简单和基本,但我真的不喜欢它.当然我可以使用切换条件,但在我看来,它会以不同的方式显示相同的基本功能.
我的问题是:有没有办法以优雅和可扩展的方式实现该功能?
仅供参考,我已经发布了这篇文章,但我没有找到适合我的问题的答案.
Soc*_*owi 13
在我看来,你所链接问题的公认答案非常适合你.存储对地图中函数的引用:
Map<String,BiConsumer<T,U>> map = new HashMap<>();
map.put("1",PhaseOne::performPhase);
map.put("2",PhaseTwo::performPhase);
map.put("3",PhaseThree::performPhase);
map.get(phase).accept(inputParser.getSource(), inputParser.getTarget());
Run Code Online (Sandbox Code Playgroud)
替换T和U类型inputParser.getSource()和inputParser.getTarget().
使用这种方法,Phase…类不需要公共超类或接口.
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |