我有一个算法的大纲 - 一些必须按特定顺序执行的逻辑步骤。算法的结果必须是某个数字。这自然让我想到了使用模板方法模式。这适用于void
方法,但我的问题来了:算法中的每个步骤都不是void
方法,但允许返回一个数字(所以它们是int
方法) - 如果一个步骤返回一个非零数字,这个数字就是算法执行的结果,如果它为零 - 执行继续下一步。
这听起来可能真的很微不足道,但我仍然觉得有这样的东西有点难看:
public int algorithm() {
int resultStep1 = step1();
if (resultStep1!=0) {
return resultStep1;
}
int resultStep2 = step2();
if (resultStep2!=0) {
return resultStep2;
}
...
}
当然step1()
,step2()
等等都是抽象方法,在扩展我的相应类中有自己的具体实现。
我想到的另一个想法是使用异常,但是当我们在这里讨论控制流时,这将是一种反模式。
我在这里遗漏了什么还是这只是我必须写的方式?