制御の反転と依存性注入
Martin Fowlerが書いた論文によると、制御の逆転はプログラムの制御フローが逆転する原理です。プログラマーがプログラムのフローを制御する代わりに、外部ソース(フレームワーク、サービス、その他のコンポーネント)が制御を行いますそれ。何かを別のものに差し込むようなものです。彼はEJB 2.0についての例を述べました: たとえば、セッションBeanインターフェースは、ejbRemove、ejbPassivate(セカンダリストレージに保存)、およびejbActivate(パッシブ状態から復元)を定義します。これらのメソッドがいつ呼び出されるかを制御するのではなく、何を実行するかを制御します。コンテナは私たちを呼びます、私たちはそれを呼びません。 これは、フレームワークとライブラリの違いにつながります。 制御の反転は、フレームワークをライブラリと異なるものにする重要な部分です。ライブラリは基本的に、呼び出すことができる関数のセットであり、最近では通常、クラスに編成されています。各呼び出しはいくつかの作業を行い、クライアントに制御を返します。 私は、DIがIOCであるという視点は、オブジェクトの依存関係が逆転することを意味します。オブジェクト自体の依存関係、ライフサイクルを制御する代わりに、何か他のことがあなたのために行います。ただし、DIについて手作業で説明したように、DIは必ずしもIOCではありません。それでもDIはあり、IOCはありません。 ただし、このペーパー(pococapsule、C / C ++の別のIOCフレームワークから)では、IOCとDIがあるため、IOCコンテナーとDIフレームワークはJ2EEよりはるかに優れていることを示唆しています。 、したがって、それをプレーン・オールドJava / C ++オブジェクト(POJO / POCO)にしません。 依存性注入パターン以外のコントロールコンテナーの反転(アーカイブリンク) 古いコンポーネントベースの開発フレームワークの何が問題であるかを理解するための追加の読み物。これは上記の2番目のペーパーにつながります。制御の反転の理由と内容(アーカイブリンク) 私の質問:IOCおよびDIとは正確には何ですか?私は混乱しています。pococapsuleに基づいて、IOCはオブジェクトまたはプログラマーとフレームワーク間のコントロールの単なる反転よりも重要なものです。