依存性の注入(Dependency injection)についてド素人が調べてみる

Dependency injection(ディペンデンシー・インジェクション)について教えてくださいと言われたけど適当PHPerの私にはわかりませんでんしー。というわけで、DIの要件についてまとめてみた。

DIの要件

  • 外部ファイルから依存性を注入する。
  • 依存関係を外部ファイルに持ちソースコード上に持たない。
  • コンポーネント間の関係はインターフェースで記述する。
  • 具体的な関係性は外部ファイルに記述する。
  • コンポーネント間の依存性を下げることができる。

DIの利点

  • コンポーネントの結合度が下がる
  • 単体テストがしやすい
  • フレームワークに依存しない

参考リンク

やはりあなた方のDependency Injectionはまちがっている。

やはりあなた方のDependency Injectionはまちがっている。 — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something
  • DIコンテナとDIの違いを教えてくれている。
  • dependencyとは依存性ではなくオブジェクトであるそうだ。
  • オブジェクトAが内部オブジェクトBを使う関係ではなく、関係性を外部から注入する。もっと正しくざっくり言うと外部からオブジェクトを注入して使用する。その外部からオブジェクトを注入する行為をDIと言う。このようにコンポーネント間の疎結合性を担保して、各コンポーネントの独立性を高めることが大切なんだと思われる。

…外部から使用するオブジェクトをぶっ込む(インジェクション)する一連の仕組みと捉えておけばだいじょうぶだということ。Springboot2などのコードを見ていて、なんか無駄だとしか感じなかったんだけど。なんとなくわかった。ちなみに自分はクラス密結合のコードを書いているということや、一連の技術を調べていて親クラスを共通メソッドなどを定義して呼び出す行為は親クラスを神クラスに仕立て上げて依存性を生むということを改めて再認識した。1人でつくっていると、アンチパターンにはまる。。。

コメント

タイトルとURLをコピーしました