Ninject / Spring / などの依存性注入フレームワークを使用することの多くの魅力を理解しています。依存性がどこから来ているのかを考えずに新しいクラスをコーディングするというアイデアが大好きです。
私が読んだ例の多くは、シングルトン クラスを使用しています。したがって、次のようなものがあります。
class A
{
Database _db;
A(Database db)
{
_db = db;
}
}
また、システム全体で 1 つのデータベースしかないため、次のような方法でアプリケーション エントリ ポイントにデータベースを登録できます。
Bind<Database>().AsSingleton()
私が理解できないのは、依存関係がシングルトンではなく、一度に複数のインスタンスが存在する可能性がある状況にアプローチする方法です。私が見た DI フレームワークでは、シングルトンとして定義するか、使用するクラスごとに新しいインスタンスを作成するかのオプションしか与えられないようです。
手動依存性注入? 使用するインスタンスを選択するファクトリ オブジェクトを定義しますか? それらがシングルトンであるふりをすることを可能にするある種の階層的スコープメカニズム? この場合、どのようなパターンが存在するでしょうか。