2

Ninject / Spring / などの依存性注入フレームワークを使用することの多くの魅力を理解しています。依存性がどこから来ているのかを考えずに新しいクラスをコーディングするというアイデアが大好きです。

私が読んだ例の多くは、シングルトン クラスを使用しています。したがって、次のようなものがあります。

class A
{
    Database _db;

    A(Database db)
    {
        _db = db;
    }
}

また、システム全体で 1 つのデータベースしかないため、次のような方法でアプリケーション エントリ ポイントにデータベースを登録できます。

Bind<Database>().AsSingleton()

私が理解できないのは、依存関係がシングルトンではなく、一度に複数のインスタンスが存在する可能性がある状況にアプローチする方法です。私が見た DI フレームワークでは、シングルトンとして定義するか、使用するクラスごとに新しいインスタンスを作成するかのオプションしか与えられないようです。

手動依存性注入? 使用するインスタンスを選択するファクトリ オブジェクトを定義しますか? それらがシングルトンであるふりをすることを可能にするある種の階層的スコープメカニズム? この場合、どのようなパターンが存在するでしょうか。

4

1 に答える 1

1

あなたの質問はかなり広いです。求めている特定のユースケースがある場合は、より正確に質問に答えることができます。

私が使用したほとんどの DI フレームワークには、あなたが言及したシングルトンと一時的なスコープがあり、通常はスレッドごとにもあります。それ以上のものもあれば、独自の拡張機能を作成して独自のスコープを定義できるものもあります。http 要求ごと、http セッションごと、および WCF 操作ごとに拡張機能を確認しました。

こちらもご覧ください...

于 2012-11-02T02:41:59.260 に答える