開発手法 / DI

開発手法 / DI

Dependency Injection の略で、日本語の定訳では「依存性注入」。 オブジェクト指向型言語においての設計スタイルの一つ。

考え方としては、各クラスが各々自分の関係するクラスを生成するのではなく、このような機能を使いたいと宣言的に書いておいて、それを使えばよいというモノ。 実装としてそこに何が入るかは使う側は関知しない、この「どのような機能を使いたい」かが「依存性」で、それを解決するのが「注入」である。 この注入してくれる存在が DI コンテナ と呼ばれるものになる。

効果としての視点。

オブジェクト生成部分が駆動するコードと切り離されるため、その部分の各クラス間の関係性が緩まる。 結果クラス間の独立性が高まるため、ユニットテストが容易になる。 各クラスは振る舞いを利用するように記述し、実装はDIコンテナで入れ替えられるので実装非依存の設計にすることができる。

欠点。

通常の動作を超越した部分で非手続き的に生成作業が進んでしまうため、本当の流れを理解しにくい(そもそも理解しなくていいという思想)。 なので、この部分で躓くと問題解決がつらくなってしまう。

通常の動作を超越しているため、DIコンテナ自体の実装が高度なメタプログラミングになってしまい、さらにわかりにくさを加速させる。

development_method/di/start.txt · 最終更新: 2021-05-19 10:49 by ore