在 Spring 框架和 Java 世界中,我使用了一种有趣的对象收集器模式。例如考虑下面 -
public interface Calculator {
SomeOutput calculate(SomeInput input);
}
@Component
public class CalImpl1 implements Calculator {
public SomeOutput calculate(SomeInput input){
//some implementation
}
}
@Component
public class CalImpl2 implements Calculator {
public SomeOutput calculate(SomeInput input){
//some implementation
}
}
现在这可以很容易地使用 Spring DI 注入另一个类
@Component
public class Main {
//This line collects all to implementors of this and set it here.
@Autowired
public List<Calculator> calculators;
//other methods
}
现在的问题是我不确定如何在 scala 中实现相同的目标。我做了一些搜索,发现了 scala 中使用的蛋糕模式(http://loicdescotte.github.io/posts/scala-di/),但这似乎与上面的对象收集器没有相同的效果。我也想遵循我认为在蛋糕模式中被违反的开闭原则,但使用对象收集器我可以轻松实现它。
有没有办法像在 scala 中实现一样实现相同的对象收集器?