ひがやすを技術ブログ

電通国際情報サービスのプログラマ

DIの本質

DIの本質は、仕様と実装を分離することです。コンポーネントの利用者は、仕様を知っていれば、実装は気にする必要がありません。
このことにより、再利用性、保守性があがります。
仕様と実装の分離は、過去において重要だといわれ続けていたのにもかかわらず、あまり実現されていないテーマでした。それを、強制的に実現させているのが、DIコンテナになります。ギブスをはめているようなものですね。ギブスの痛みをできるだけ和らげるために、S2Containerによる自動バインディングやOGNLの利用、Kijimunaによる自動補完やバリデーションがあるわけです。
DIの記述が面倒なフレームワークは、ギブスの痛みがかなりのストレスになるはずです。
仕様と実装が分離された世界では、相手のコンポーネントの実装を知る必要もソースを見る必要もありません。実装クラスはブラックボックスであり、仕様さえ理解していれば良いのです。仕様通りに動かない場合は、ソースを見る必要が出てくるかもしれませんが。