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 での実装のように同じオブジェクト コレクターを実現する方法はありますか?