転送します。https://cngolon.iteye.com/blog/2187021
IoCの-コントロール反転の反転
DI -依存性の注入依存性注入
上記の二つの概念を理解するには、次の問題を見つけることが必要です。
- 参加者は誰ですか?
- 依存性:誰に依存?なぜ頼りますか?
- 注入:誰に注入されましたか?どのような最後の注射では?
- 制御の反転:制御?どのようなコントロール?なぜそれは、(正のターンを持っている必要がありリバーサル)反転と呼ばれていますか?
- 依存性の注入と制御の反転は、同じ概念の右ですか?
ここでは簡単な答えは上記の質問ですが、これらの質問はそれを考え出した、のIoC / DIは理解するだろう。
(1)参加者持っている人:
参加者は、一般に、三人の者を有する1つのオブジェクトである1のIoC / DIコンテナ、他の外部リソースの目的です。
しかし、また、用語を説明するために、オブジェクトを参照し、任意の、通常のJavaオブジェクトであるのIoC / DIコンテナフレームワークプログラムのIoC / DI機能を実装するために参照するために使用される単純な点は、外部リソース・オブジェクトがオブジェクトを指しオブジェクトが他のオブジェクトを必要とする、またはオブジェクトがそうでリソースを提出する必要があると:必要はなく、外部のオブジェクトから取得し、まとめなど、リソースと呼ばれます。
(2)誰に依存者:
もちろん、オブジェクトがのIoC / DIコンテナに依存しています
(3)なぜに依存しています:
オブジェクトは、必要な外部リソースを提供するためのIoC / DIコンテナオブジェクトを必要とします
(4)誰に注入され、誰が:
のIoC / DIコンテナは、オブジェクトを注入することは明らかです
(5)最後に注入されているもの。
これは、オブジェクトのために必要な外部リソースに注入されます
(6)誰が誰を制御します。
もちろん、制御対象へのIoC / DIコンテナ
(7)どのようなコントロール:
主制御オブジェクトのインスタンスを作成することです
(8)なぜ、逆に呼び出されます。
リバースは、正の条件を基準とし、それが何を転送する考え?あなたはどのAにCを使用したい場合は、あなたがそれを行うだろうか、従来のケースでアプリケーションを考えてみましょうか?もちろん、必要な外部リソースCを得るためのイニシアチブでは、カテゴリには、これは正と呼ばれている、つまり、Cのオブジェクトを作成するために直接アクセスしてください。だから、逆何ですか?クラスAは、Cを取得するために積極的にもうありませんが、受動のIoC / DIコンテナCのインスタンスを取得待つ、待機し、次いで逆カテゴリAに注入しました
凡例には外観のIoC / DI、従来のクラスの使用図7に示す模式的なクラスCが、存在しない場合には、説明するために使用されます。
概略的な図で使用される従来の図。7 C
IoC / DIコンテナは、クラスCは、図8に示され、より長い活性が作成する場合:
図8 Aは、もはや積極的にクラスCに作成されていません
代わりに受動的に待つ、のIoC / DIコンテナCのインスタンスを得る待ってから図9に示すように、逆クラスAに注入:
図9のプログラム構造のIoC / DIコンテナの概略図
(9)依存性注入と制御の反転は同じ概念それを何ですか?
上記の教示によれば、それを見ることができるべきで、制御の依存性注入と反転は同じものの異なる説明であり、特定の態様から、つまり、それらは異なる角度を記述する。依存性注入は、完全な依存性注入点で説明することができ、説明のアプリケーション点からのものである:アプリケーションは、コンテナは、それが必要とする外部リソースを作成し、注入依存し、説明におけるコンテナの観点からの制御の反転、完全な点について説明:コンテナ制御アプリケーション、コンテナアプリケーションによって必要とされるアプリケーションに外部リソースの逆注入。
(10)の概要について:
実際には、IoCの/ DIプログラミングは、最大の変化は、コードからのものではないもたらすが、イデオロギーの面で、変更「マスター・スレーブ転置は、」発生しました。アプリケーションは、リソースがイニシアチブを取るためにあるものを手に入れるために、もともと上司だったが、のIoC / DIでアプリケーションが受動的、そして、それは必要なリソースを作成して注入するのIoC / DIコンテナを待っている受動的になり、思いました。
だから、小さな変化が、実際には関数の多重化を助け、彼らが疎結合されているように、それが必要とするため、効果的にオブジェクトや外部リソースを分離し、アイデアをプログラミング大きな前進であり、より重要なのは、システム全体のプログラムを作ります構造は非常に柔軟になります。