我正在开发一个名为 的简单类,Simulator
它将 s 列表应用于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());
}
}
如您所见,首先我验证输入是否可由 a 处理Simulation
,过滤不能处理的模拟,然后将这些模拟应用于输入。
从面向对象的角度来看,我暴露了Simulation
类的内部结构。方法所做的检查操作processable
应该隐藏在prepareOutput
方法内部。
但是,由于对processable
可见Simulator
,我可以应用更实用的方法,这非常方便。
哪种方法更好?我还缺少其他解决方案吗?