2005年09月12日

Dependency Injection

  
Dependency Injectionという用語を最近よく目にするようになった(まだ、耳にすることは少ない)。ようは、OCPの原則に忠実に実践するためのテクニックだ。クラス間の依存を排除することが、その後のメンテナンスや拡張に効果があることはもう言うまでもないことだが、いざ、依存を排除しようと思うと、壁につきあたる。それは、絶対にどこかで具象クラスを生成する必要がある、ということだ。

普通は、具象クラスのインスタンスを生成するコードを直接ハードコードすることが多いが、そうせずに、Clientクラスが、どのクラスに依存するかを、Clientのコンストラクタなどの引数で渡してもらうことで、コーディング時ではなく、実行時にまで依存を遅延させよう、というテクニックだ。

でも、そこまでやる必要があるのだろうか。確かに、ソフトウェア構造的には美しいし、技術者の満足度は高まると思うけど、全てのソースから依存をなくそう、なんていう方向になったら、かえって複雑になりすぎるとおもう。
多少依存があっても、簡単に修正できれば何の問題もないはずだ。どんなときに、DIの有効度が高くなるのか、そのあたりを見極めないといけないな。

Javaなどでは、このDependency Injectionを実現する汎用のフレームワーク(DI コンテナというらしい)があるらしいが、.NETでは、あるのかな。




 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50072877