我正在开发一个名为
以下是代码。
如您所见,我首先验证输入是否可由“Simulation”处理,过滤掉不可处理的模拟器,然后将这些模拟器应用于输入。
从面向对象的角度来看,我正在公开“Simulation”类的内部。由“processable”方法执行的检查操作应该隐藏在“prepareOutput”方法中。
然而,通过让“Simulator”看到“processable”,我可以采用更实用的功能方法,这非常方便。
哪种方法更好?我是否忽略了其他解决方案?
Simulator
的简单类,它可以将一组 Simulation
应用于某个输入。对于每个输入,模拟可以根据输入必须满足的某些条件生成输出或不生成输出。 Simulator
生成的结果是一个输出列表。以下是代码。
class Simulator {
final List<Simulation> simulations;
// Some initialization code...
List<Ouput> execute(Input input) {
return simulations
.stream()
.filter(s -> s.processable(input))
.map(s -> s.prepareOutput(input))
.collect(Collectors.toList());
}
}
如您所见,我首先验证输入是否可由“Simulation”处理,过滤掉不可处理的模拟器,然后将这些模拟器应用于输入。
从面向对象的角度来看,我正在公开“Simulation”类的内部。由“processable”方法执行的检查操作应该隐藏在“prepareOutput”方法中。
然而,通过让“Simulator”看到“processable”,我可以采用更实用的功能方法,这非常方便。
哪种方法更好?我是否忽略了其他解决方案?
someSimulation.prepareOutput(null)
调用您的任何模拟,会发生什么?那个是否可以处理?或者,如果我使用不可由给定模拟处理的输入参数调用prepareOutput
,我需要从外部了解或检查它的可处理性吗?返回null
还是抛出异常?是使用 Optional 选项吗? - Roland