レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

DI解説のなかで、DIのメリット説明方法

■DIの説明で「生成処理の一元管理のメリット」を言うなら「一時的なクラスの切替のシナリオ」を使うべき

DIのメリットを説明するときの話。
DIで管理することで「具象クラスに仕様変更があったときに切替が容易」といいますが、Eclipseリファクタリング全盛の時代に大きなメリットとは感じられないでしょう。

説明するなら「一時的にクラスを取り替える必要がある場合」というシナリオの方がよいでしょう。
テスト時に一時的にクラスを取り替えたい場合に、いちいち生成部分をコメントアウトして変更し、テスト後に戻すような作業の必要がなくなります。

■生成処理をフレームワークに委譲する理由

生成処理をフレームワークに委譲する理由は、生成処理を一元管理することでオブジェクトのすべてを一元的に管理できるからです。
たとえばライフサイクル管理やアスペクトの織り込みは、オブジェクトの「生成」を管理しているからこそできるのです。
そういったことが容易にできる柔軟なアーキテクチャの準備が整うことが大きなメリットです。

インスタンスの生成処理そのものコストダウンをいくら説明してもメリットが浮かび上がりませんし、結局「DIなんて不要」だという誤解のもとになる説明方法でしょう。