質問: Javaでプラグインを処理するための良いパターンはありますか? この質問は、前の質問私は尋ねました。 私が書いたコードの大部分は、その本質によって容易に拡張可能でなければならないAPIと関係しています。私と私のチームの残りの人たちが、プラグインを処理する方法、すなわち私たち自身のインターフェースを拡張するクラスと最終的な実装で対処することに取り組んでいる共通の問題は、ソリューションの原子的な部分のように感じるはずです。私は特に次のようなユースケース(車のアナロジーを使用する)で考えています。 **Interface:** ``` Car ``` **提供された実装:** ``` Ford Audi ``` **サードパーティの実装:** ``` Toyota ``` 通常、 `CarDealer` クラスは、 `Car` を明示的に宣言することなく `Car` の既存のすべての実装を認識する必要があります。構成ファイル。 `Toyota` のように、 `CarDealer` で自分自身を登録することができます。 >(または他の実装)は明示的に参照されるまで初期化されません。これはcatch22です。 `Car` の実装に注釈を付けてコードを実行し、関連するアノテーションを持つクラスを初期化する方法もありますが、これは恐ろしく重いリソースになる恐れがあります。 私たちはこの問題を持つ最初の人にはなれないと考えています。それでそこに解決するための既知のデザインパターンはありますか?
回答: あなたは依存性注入を探しているようです。 (ボーナス:Wikipediaは車の例を使用しています)