/note/tech

DI(Dependency Injection) と Factory Pattern

車の生産や車検の時に、つまり単体テストする場合に依存するインスタンスをテスト用に変更する程度であればDI構造を取らなくてもFactory Patternで十分だと考えます。

もちろんDIの方が柔軟であることに間違いはありません。大きな違いは依存するインスタンスの生成などのソースコードが外部に存在することで、ソースコードの追跡が一度途切れてしまうことです。

一方で、例えば車ではなく、電子レンジのようなオブジェクトを考えた場合、レシピと食材を投入して料理が調理されて出てくる、といった機能に対しては「DIしないでどうする!」と思います。

自分もアプリケーションレベルでは基本的にFactoryパターンを使いつつ、複雑なオブジェクトの生成でもBuilderパターンを使うべきだと考えている。

元のコードに簡単にジャンプできないのはかなりツラい(今ではIDEが対応していたりするのだろうか?)。

とはいえ、フレームワークによっては問答無用でDIコンテナに登録していくもの(laravelとか)もあるので、そういう場合は素直にフレームワークに従った方がよいのではあるが。