
082-123-4567
店舗名 | DX005江口テスト(SkDemoB静岡) |
---|---|
住所・地域 | 沼津市沼津 |
エリア | 浜松市 |
営業時間 | 2:00-3:00 |
電話番号 | 082-123-4567 |
LINE | LINEでのお問い合わせはコチラ |
2024
01/25[Thu]
12:20
依存性の注入(いぞんせいのちゅうにゅう、英: Dependency injection)とは、あるオブジェクトや関数が、依存する他のオブジェクトや関数を受け取るデザインパターンである。英語の頭文字からDIと略される。DIは制御の反転の一種で、オブジェクトの作成と利用について関心の分離を行い、疎結合なプログラムを実現することを目的としている。
dependencyを「依存性」と訳すのは本来の意味[1] から外れているため「依存オブジェクト注入」の用語を採用する文献も複数存在する[2][3]。
概要
DIを利用したプログラムを作成する場合、コンポーネント間の関係はインタフェースを用いて記述し、具体的なコンポーネントを指定しない。具体的にどのコンポーネントを利用するかは別のコンポーネントや外部ファイル等を利用することで、コンポーネント間の依存関係を薄くすることができる。
依存関係がプログラムから外部に取り除かれることで、以下のようなメリットが発生する[4]。
結合度の低下によるコンポーネント化の促進
単体テストの効率化
特定のフレームワークへの依存度低下
Dependency injectionという用語を作成したのはソフトウェア開発者のマーティン・ファウラーである。類似の概念としてそれ以前から制御の反転 (IoC) と呼ばれるアイデアが存在していたが、それを整理・範囲を限定することでDIが生み出された。現在では代表的なDIコンテナとして知られるSpring Frameworkも、誕生当初はDIではなくIoCという表現を用いていた。DIは2000年代前半のJavaによる開発において、極めて複雑な標準仕様となっていたJava EE(現・Jakarta EE)の特にEJBに対する批判を背景に広く用いられるようになった[4]。 その概念は後に標準仕様にも取り込まれ、2007年のJava EE 5では限定的な機能を備えたEJB 3.0が、2009年のJava EE 6ではより汎用的なDIコンテナとしての機能を備えたCDIが定義されている[5]。
DIの種類
プログラムに依存性を注入する方法としては、以下のような手法が存在する。
インタフェース注入
注入用のインタフェースを定義して注入を行う方法
setter 注入
setter メソッドを定義して注入を行う方法
コンストラクタ注入
コンストラクタを定義して注入を行う方法
もっと見る
- 07Mon
- 08Tue
- 09Wed
- 10Thu
- 11Fri
- 12Sat
- 13Sun
-
01/16[Thu]13:57
-
09/09[Mon]17:43
-
09/05[Thu]11:53
-
04/22[Mon]15:10
-
04/22[Mon]15:10
-
04/22[Mon]14:57
-
04/22[Mon]14:56
-
10/30[Mon]16:29
-
10/30[Mon]16:29
-
10/30[Mon]16:29
-
10/30[Mon]16:28
-
10/30[Mon]16:28
-
10/30[Mon]16:28
-
10/30[Mon]16:28
-
10/30[Mon]16:28
-
10/30[Mon]16:28
-
10/30[Mon]16:07
-
10/30[Mon]16:07
-
10/30[Mon]16:06
-
10/30[Mon]16:06
-
01/16[Thu]13:58
-
08/08[Thu]14:52
-
11/24[Thu]15:20
-
11/24[Thu]15:19
-
11/24[Thu]15:17
-
11/24[Thu]14:52
-
11/24[Thu]14:51
-
11/24[Thu]14:50
-
11/24[Thu]14:48