利用可能な OSGi サービスを動的に選択できるインテリジェントなシステムを念頭に置いています。つまり、実行時パラメータに応じて、実装または別の実装を選択します。たとえば、実行中のアルゴリズムに通知して、数回の反復後にオペレーターを変更したり、システムの負荷分散などに応じて変更したりします。
while(stopCriterion){
operator.doSomething(); //There exist many operator implementations
}
私の最初のアプローチは、DS を使用してサービスを公開し、サービスを 0..n および動的ポリシーにバインドすることです。次に、外部のインテリジェントコンポーネントから、各反復で使用するサービスをアルゴリズムに通知します ( EventAdminを使用しますか?)。
operator[selected].doSomething();
これは、多くの異なるサービス実装で多くの実験を実行する必要がある場合に、複雑さを軽減するのに役立ちます。また、 Eclipse Communication Frameworkで Remote Services 仕様を使用して、分散アルゴリズムなどの研究を行う予定であるため、実行時に新しい実装が動的に現れることも可能になる可能性があります。
ただし、これが良いアイデアなのか、それとも実装を使用するかを動的に選択するための別のより良いメカニズムが存在するのかはわかりません。DSの代わりにServiceTrackerを使用するのは良い選択肢ではないと思いますが、提案は受け付けています:)
前もって感謝します。