質問: 依存性注入とは何ですか? 依存性注入 についての具体的な質問と一緒に、いくつかの質問がすでに投稿されています。しかしながら、 依存性注入とは何ですか。また、いつ/なぜそれを使用すべきか、または使用すべきではありませんか。
回答: 上記の答えはすべて良いです、私の目的は、プログラミングの知識がない人でも概念を理解できるように、簡単な方法で概念を説明することです依存性注入は、複雑なシステムをより簡単に作成するのに役立つ設計パターンの1つです。私たちは日々の生活の中でこのパターンの多種多様なアプリケーションを見ることができます。いくつかの例は、テープレコーダー、vcd、cdドライブなどです。 上記の画像は、20世紀半ばのリールツーリールポータブルテープレコーダーの画像です。 ソース 。テープレコーダーマシンの主な目的は、サウンドを録音または再生することです。システムの設計中に、サウンドまたは音楽を録音または再生するにはリールが必要です。このシステムを設計するには2つの可能性があります マシン内にリールを配置できます リールを配置できるフックを提供できます。 最初のものを使用する場合は、マシンを開いてリールを変更する必要があります。 2番目のリール、つまりリール用のフックを選択した場合、リールを変更することで音楽を再生できるという追加の利点が得られます。また、リール内の何でも演奏することだけに機能を減らします。賢明な依存関係注入と同様に、依存関係を外部化してコンポーネントの特定の機能のみに焦点を当て、独立したコンポーネントを結合して複雑なシステムを形成できるようにするプロセスです。依存性注入を使用して達成した主な利点。 高い凝集力と疎結合。 依存関係を外部化し、責任のみに注目する。 物をコンポーネントとして作成し、組み合わせて高機能の大規模システムを形成します。 独自に開発され、適切にテストされているため、高品質のコンポーネントを開発するのに役立ちます。 コンポーネントに障害が発生した場合、コンポーネントを別のものに置き換えると役立ちます。 現在、これらの概念は、プログラミングの世界でよく知られているフレームワークの基礎を形成しています。 spring angularなどは、この概念の上に構築された有名なソフトウェアフレームワークです。依存性注入は、コンパイル時に他のオブジェクトが依存するオブジェクトのインスタンスを作成するために使用されるパターンです。どのクラスを使用してその機能を提供するか、またはオブジェクトにプロパティを注入する方法を依存性注入と呼びます。依存性注入の例以前は、このようなコードを書いていましたpublic myclass{ dependentclass dependentobject /* at somewhere in our code we need to instantiate the object with new operator inorder to use it or perform some method. */ dependentobject= new dependentclass(); dependentobject.somemethod(); } 依存性注入では、依存性インジェクターがインスタンス化を解除しますpublic myclass{ /* dependency injector will instantiate object*/ dependentclass dependentobject /* at somewhere in our code we perform some method. the process of instantiation will be handled by the dependency injector */ dependentobject.somemethod(); } また読むことができます 制御の反転と依存性注入の違い