1. 無料アクセス解析

crossroad's Blog

Javaを中心にした技術ネタなど。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

DIコンテナの価値・メリット

昨今のJavaによるシステム開発(特にWebアプリケーション)では、
DIコンテナの使用が当たり前のようになってきています。

今回、僕が参画したプロジェクトでも、Seasar2の採用を検討しています。

しかし、ここで周囲の人から「DIコンテナって何がうれしいの?」
という質問が。
うーむ、すぐに思いつくところでは、
 1.オブジェクト間の直接的な依存関係を排除でき、オブジェクトの
  再利用性や保守性が高まる。
 2.アスペクト指向技術との組み合わせによって、トランザクション管理
  と言った非業務ロジックを任せることができる。
 3.インターフェースベースの設計が促進され、オブジェクトの責務
  が明確化すると共にシステムの品質向上に繋がる。
 4.モックやスタブへの切替えが用意になり、ユニットテストがし易くなる。
と言ったところでしょうか。。。

しかし、他の類フレームワーク...MVCフレームワークやO/Rマッピング
フレームワークなど...に比べると効果が直感的にわかりにくいです。
ある程度、Javaでの開発経験があれば理解してもらえますが、
そうではない人(マネージャや業務SEの方)にはなかなかDIコンテナ
の利点を理解してもらえません。

考えてみると、DIコンテナはそれを使えば効果が表れるものではなく、
良い設計ができてこそ効果を発揮するのではないかと言う事です。
(DIコンテナに限らず、何でも使えば良いってものではないですが)

再利用性や拡張性、保守性を高めようと設計していくと、自ずと
オブジェクト間の依存関係を弱めようと考えます。
インターフェースを使うことで、オブジェクト同士の結合度を
下げようとするわけです。

が、例えインターフェースを利用しても、必ずどこかにオブジェクト
の依存関係を記述しなければなりません。
これまでは、主にAbstract FactoryやFactory Methodといった
デザインパターンを使うことで、この「依存関係を記述する場所」
を一元化していたのですが、それでもプログラムに依存関係を
埋め込むことには変わりありません。

そこで、DIコンテナを使いたいと言う動機が産まれます。
DIコンテナを使えば、DIコンテナの定義ファイルに依存関係を
記述するので、プログラムからは依存関係の記述を排除できます。

このように、「良い設計とは何か」「それを実現するにはどうするか」
と言うストーリーを理解してはじめてDIコンテナの価値が
わかるのではないかと思います。

逆に、良い設計ができなければ、DIコンテナのメリットを充分に
活かすことができません。

DIコンテナを使うには、多層アーキテクチャや、J2EEパターン、
アーキテクチャパターンなどの知識も必要になってくるのではないでしょうか。


関連記事
スポンサーサイト

テーマ:プログラマの憂鬱 - ジャンル:コンピュータ

  1. 2006/08/08(火) 21:52:02|
  2. ソフトウェア開発 Seasar
  3. | トラックバック:0
  4. | コメント:2
<<S2Daoの例外ハンドリング | ホーム | ラ・キュベ・ミティーク(赤ワイン)>>

コメント

Yvonne Carpenter

attemptable citatory photosalt grane sensually nonchalance intergrade heptastyle
<a href= http://www.tech.port.ac.uk/icg/ >(UK) University of Portsmouth</a>
http://cnn.com/2000/US/12/12/reunited.brothers.ap/index.html

ベーシスト兼ソフトウェアエンジニアのブログ
  1. URL |
  2. 2008/06/08(日) 04:22:05 |
  3. Petra Wyatt #-
  4. [ 編集]

Robb Leon

attemptable citatory photosalt grane sensually nonchalance intergrade heptastyle
<a href= http://www.talesofadventure.net/1whatsnew/ >ToAd</a>
http://www.geocities.com/deputy_dave_21/

ベーシスト兼ソフトウェアエンジニアのブログ
  1. URL |
  2. 2008/06/04(水) 01:14:56 |
  3. Katie Best #-
  4. [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://bagineer.blog59.fc2.com/tb.php/21-927500d0
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

crossroad

Author:crossroad
関西在住。男。
フリーランスのソフトウェアエンジニア。
エレキベース(Rock&Roll)とお酒が好物でございます。

カテゴリー

タグリスト

Java F1 フリーランス ベーシスト HARRY TheStreetSliders iPhone FX お酒 Seasar Maven eclipse Wicket マイホーム 野球 プロジェクトファシリテーション Rails Ruby UML お店 ソフトウェア Tomcat S2Flex2 jsf Teeda Eclipse タグライブラリ ajax タスク europa mylyn trac 

ブログ内検索

最近の記事

最近のコメント

最近のトラックバック

カレンダー

07 | 2017/03 | 08
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

月別アーカイブ

全ての記事を表示する

全ての記事を表示する

Twitter


RSSフィード

リンク

このブログをリンクに追加する

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。