DIまたはいつ使用するかの使用パターン/ユースケース
-
28-09-2019 - |
質問
アプリケーションでDIを使用する必要があるかどうかはわかりません。私はそのようなサービスを注入することを知っています PlaceService
また CalculationService
などは非常によくフィットしますが、DIのようなDIを使用してドメインオブジェクトを作成する必要があります User
?もしどうでしょうか User
最初と最後の名前を必要とするコンストラクターは1つだけです。これはdiで溶けやすいですか?
DIを使用して、セット/リストインターフェイスのインスタンスを作成する必要がありますか、それともこれは純粋な過剰ですか?
私は主にGUICEを使用しています。
解決
私が使用するルールは、一般的に、オブジェクトを純粋に原始的な値で構築できる場合を除き、依存性噴射を支持することです。また、オブジェクトが別の実装に置き換える可能性はありません。
ただし、ドメインオブジェクトの場合、特にオブジェクトが構成されていない場合 貧血ドメインモデル, 、つまり、オブジェクトがゲッターとセッターの袋にすぎない場合、たとえば、そのようなオブジェクト、依存関係の注入、および依存関係の注入、およびそのようなオブジェクトを持続できるオブジェクトを持つことが有用です。 軟膏 強力な組み合わせになる可能性があります。
Guiceには、ユーザーオブジェクトのようなオブジェクトによってもたらされる問題の種類に対する特定のソリューションがあります。 AssistedInject, 、他の軽量コンテナでも同様のことが可能ですが、ビルダーまたはアダプターパターンの何かを使用しています。
他のヒント
IG0774による答えは良い出発点です。さらに、この経験則を提供したいと思います。
の用語で ドメイン駆動型デザイン, 、あなたはdiする必要があります サービス, 、ただしではありません エンティティ また 値オブジェクト.
言い換えれば、diは、通常1つまたは既知の数が使用されている概念的に長寿命のステートレスオブジェクトによく合います。