IoCのDIを理解し、説明しやすいです

2.1.1 IOCは何ですか

、「制御の反転」、技術的ではないが、デザインのアイデアであるコントロールのIOC-反転、。Java開発では、IOCはあなたではなくあなたの内部のオブジェクトの上に伝統的な直接制御するよりも、コンテナコントロールにオブジェクトを設計していることを意味します。どのように良いIOCは理解できますか?理解へのIOCの良いキーは、我々は徹底的に分析するために持っていること「用語を逆にする理由が逆転されているもの制御、誰がコントロール(反転は正のターンを持っている必要があります)、誰であるか」を定義することです:

 

誰がコントロールし、どのような制御:従来のJava SEプログラミング、我々は直接オブジェクト内に新しいを通じてオブジェクトを作成し、依存オブジェクトを作成するためのプログラム・イニシアチブ; Iocをコンテナから来て、IoCのは、これらのオブジェクトを作成するための特別なコンテナです、コントロールオブジェクトを作成し、誰がコントロール?当然のIoCコンテナコントロールオブジェクトの、どのようなコントロール?それは(だけでなく、など、このようなファイルなどのオブジェクトを含む)のリソースへの主制御外部からのアクセスです。

なぜ逆転され、どのような逆転:前方、ある取得制御に直接依存オブジェクトへのオブジェクトの自社主導によるレガシーアプリケーションは、逆の前方そこに持っている。逆にコンテナからである一方、ヘルプへの依存オブジェクトを作成し、注入;なぜ逆転されますか?コンテナは、私たちは、それ受動的に依存オブジェクトを受け入れるのオブジェクトを従属オブジェクトを検索し、注入を助けるためにあるので、それは逆であり、何が逆?買収は逆に対象物に依存しています。

図2-1に示されている従来のプログラミングを説明する凡例を用いて、関連するオブジェクトを作成するためのイニシアチブは、その後、組み合わされます。

2-1図レガシーアプリケーションの模式図

ときにそこのIoC / DIコンテナ、もはやアクティブクライアントに図2-2に示されているオブジェクトのクラスを作成します。

 

図2-2プログラム構造のIoC / DIコンテナの概略図

 

1.1.2のIoCを何

IOCは技術が、ガイドはどのように我々は疎結合、より良いプログラムを設計するという考えは、オブジェクト指向プログラミングの重要なルールではありません。従来のアプリケーションは、クラス間の高い結合が得られ、クラスの依存オブジェクト内たちの主導で作成され、それが困難なテストです。あなたは、コンテナでコンテナにコントロールの依存オブジェクトを作成し、検索するIoCコンテナを持っていたら、オブジェクト間、オブジェクトの組み合わせを注入し、オブジェクトが緩くも多重化機能を助ける試験を容易にするであろうれ、結合されて、より重要なのは、プログラムの全体のアーキテクチャは、非常に柔軟になってきていることができます。

実際には、最大の変化をもたらすのIoCプログラミングはコードからではなく、イデオロギー的変化、「マスタースレーブ転置」。アプリケーションは、リソースがイニシアチブを取るためにあるものを手に入れるために、もともと上司だったが、のIoC / DIでアプリケーションが受動的になり、考え、そして受動的にそれが必要なリソースを作成し、注入するIoCコンテナを待っています。

IoCコンテナオブジェクトと依存関係の注入によって適切なオブジェクトを見つけるのではなく、オブジェクトを検索するためのイニシアチブをとる手助けをすることです、;「私たちに来ないでください、私たちはあなたを探している」:ハリウッドのルール - 設計ルールを指向オブジェクトのいずれかのIoCの良い指標。

 

2.1.3のIoC和、IN

DI-依存性注入、すなわち、「依存性注入」は:実行時のコンポーネント間の依存関係が容器によって決定され、コンポーネントに容器ダイナミック依存性によって注入される画像は述べています。依存性の注入は、ソフトウェアシステムに多くの機能を持ってますが、コンポーネントの再利用頻度を向上させるために、そして柔軟でスケーラブルなプラットフォームを構築するためのシステムのためのものではありません。経由して依存性注入メカニズム、我々は唯一の簡単な設定を必要とし、任意のコードをせずに、特定のリソースを心配することなく、自社のビジネスロジックを完了するために必要なターゲット・リソースを指定することができます達成するために、誰から来ます。

 

DIは、理解するための鍵です:私たちは徹底的に分析するために持っていることを「注入された方の依存、なぜ頼りに、注入何か」:

 

誰が誰に依存します。もちろん、IoCコンテナに依存したアプリケーションです。

なぜに依存している:アプリケーションがオブジェクトを必要な外部リソースを提供するために、IoCコンテナを必要とします。

誰注射:アプリケーションに依存し、オブジェクトがオブジェクトにIoCコンテナアプリケーションに注入されることは明らかです。

 

:●何注入(オブジェクト、リソース、定数データを含む)目的のために必要な外部リソースに注入されます。

 

それをどうするかによってのIoCとDI?Martin Fowler氏に実際には、彼らは漠然とした制御概念の反転のために別の視点を記述する同じ概念で、ある(おそらく唯一のコンテナコントロールオブジェクトとしてこのレベルを理解すること、オブジェクト・リレーショナル保護するために行くことを考えることは困難である)ので、2004年のマスター新しい名前を与えている:「依存性注入」、比較的IoCのを話すと、依存性の注入は、」はっきり「オブジェクトの依存関係がのIoCを注入された説明コンテナ設定に依存するオブジェクトを。」

 

 

2:DIとのIoCの説明を理解しやすいのBromonを共有するためのブログ

  • 2.1のIoC(制御の反転)

      IoC(制御、制御の反転の反転)と言って、すべての希望を第一に。これは、全体で、春の中核です。いわゆるIOCは、スプリングフレームワークのために、それはスプリングとの関係は、オブジェクトとオブジェクトのライフタイムを制御する責任があります。それは我々がガールフレンドを見つけるためにあるかの簡単な例を与える、何を意味するのでしょうか?一般的な状況はかなり背が高く、良いミリメートルがあったところ、我々は彼らを知る方法を考え、自分の趣味、QQ番号、電話番号、IP番号、IQ号.........に関するお問い合わせ、その後、どこでも見ることで、彼らのキャストそれを送信するために良い、そしてちょっと......このプロセスは複雑で難解である、我々は独自のデザインと、あらゆる面に直面しなければなりません。あなたが別のオブジェクトを使用する場合は、従来のアプリケーション開発、あまりにも、オブジェクトに、あなたは、あなたが(そのような接続など、など)が破壊されたオブジェクトを使用して終了した後も、それ(自分自身JNDIから新規、またはクエリ)を取得する必要がありますおよび他の目的は、常にインターフェイスうかクラスが一緒に結合されました。
      だから、IOCはそれを行う方法ですか?結婚相談所:私のガールフレンドと紹介第三者との間で見合いを通じてガールフレンドを探しているようなビット。チーのような男性と女性の多くに管理情報をお見合いすることは、私は例えば、私はガールフレンドを見つけたいものをということを教え、マッチメイキングのリストを作ることができ、林西レイのように構築ミッシェルリー、のように見えるが、ジェイのように歌う、カルロス・スピードのように、技術Dardenneと同じように、との出会いは、ミリメートルを提供し、我々の要求に従うものとなり、私たちはライン上で結婚し、彼女に行くと恋に落ちます。私たちは、候補者が要件を満たしていないお見合い与える場合は単純明快、我々は例外をスローします。全体のプロセスは自分で制御はもはやありませんが、コントロールに、このような出会い系機関と同様のコンテナがあります。春のような場合は、すべてのクラスは、あなたが何かある春を告げる、春のコンテナに登録され、あなたが何かを必要とする開発アプローチを奨励し、春には、システム内の適切な時間に実行され、物事はあなたを与えるためのイニシアチブを取りたいですだけでなく、他のニーズあなたは自分のものを配置します。クラスのすべてが、作成されていないコントロールにスプリングによって破壊され、制御対象がもはやそのオブジェクトのライフサイクルを参照していることが、春れます。それは他のオブジェクトを制御することである前に、特定の対象のために、すべてのオブジェクトは現在、スプリング制御ので、制御の反転と呼ばれます。

  • 2.2、DI(依存性注入)

      IOCはシステムの焦点は、あなたがオブジェクトに提供する必要があり、他のオブジェクトの動的に実行されています。これは、DI(依存性注入、依存性注入)によって達成されます。データベースを操作する必要が過去に、我々は常に我々だけで春を伝える必要があり春に、Connectionオブジェクトを取得するには、自分のコードAを書きたい、として、Aが構築どのようにこの構造、になどの接続、接続が必要なオブジェクト知っている必要があります。システムは、ばねが適切な時に接続が作成され、実行されているので、様々なオブジェクト間の関係の制御を終了Aに注入される注射、のように同じです。正常に実行するための接続に依存する必要があり、この接続は、スプリングによってAに注入し、そしてそれが来た依存性注入名れます。だから、DIは、それを達成する方法ですか?プログラムは、バネ注入を反射することによって達成される、オブジェクトのプロパティを変更する、オブジェクトの実行方法、動的オブジェクトの生成を可能にすることを実行しているときに、Javaの重要な特徴は、反射(反射)した後、1.3です。
      IoCとDIの概念を理解した後、すべてが単純明快になり、残りの作業は、ようやく春の枠組みの中で木材を積み上げています。

公開された376元の記事 ウォンの賞賛172 ・は 90000 +を見て

おすすめ

転載: blog.csdn.net/Eider1998/article/details/104123878
おすすめ