1. ホーム
  2. design-patterns

[解決済み] 依存性注入とシングルトンデザインパターン

2023-02-24 08:42:43

質問

依存性注入とシングルトン パターンのどちらを使うべきかは、どのように判断すればよいのでしょうか。 私は、彼らが言う多くのウェブサイトを読んできました "シングルトンパターンよりも依存性注入を使用する"。しかし、私は彼らに完全に同意するかどうかわからない。私の小規模または中規模のプロジェクトでは、私は間違いなくシングルトンパターンの使用は簡単だと思います。

例えばLogger。私は Logger.GetInstance().Log(...) しかし、この代わりに、なぜ私はロガーのインスタンスで、私が作成するすべてのクラスを注入する必要があるのでしょうか?

どのように解決するのですか?

テストで何がログに記録されるかを検証したい場合、依存性注入が必要です。さらに、ロガーがシングルトンであることは稀です - 一般的に、あなたのクラスの各々にロガーがあります。

このプレゼンテーションを見る を見れば、なぜシングルトンがダメなのかがわかるでしょう。

シングルトンの問題は、特にテストにおいて予測するのが難しいグローバルな状態を表していることです。

オブジェクトは事実上のシングルトンであっても、依存性注入によって取得することができることを念頭に置いています。 Singleton.getInstance() .

Misko Heveryがプレゼンテーションの中で述べた重要なポイントを列挙してみました。このプレゼンテーションを見た後は、なぜオブジェクトに 何を を定義させるのが良いが、その依存関係を定義させないのが良い理由です。 を作成する方法 を定義していません。