淡淡烟草味2017-05-15 16:53:13
依存関係の注入: プログラムの実行中に、別のオブジェクトと連携する必要がある場合 (そのメソッドを呼び出し、そのプロパティにアクセスする)、コード内で呼び出し先を作成する必要はありませんが、外部コンテナ#🎜 🎜#
次の例の方が興味深いかもしれません依存性の注入について理解する:
人 (Java インスタンス、呼び出し元) には斧 (Java インスタンス、呼び出し先) が必要です
原始社会では、社会的な分業はほとんどありません。斧を必要とする人 (呼び出し側) は、自分自身 (呼び出し側) でのみ斧を挽くことができます。または、通常は new キーワードを使用してコンストラクターを呼び出し、呼び出し先を作成します
産業社会に入ると、斧は一般の人が完成させるものではなく、工場で生産されるようになり、斧を必要とする人(発信者)が、気にせずに工場を見つけて斧を購入しました。斧の製造プロセスについて;単純な工場設計パターンに対応し、呼び出し元は工場を見つけるだけで済み、呼び出し先の特定の実装を管理する必要はありません
「共産主義」社会に入ると、斧が必要な人々は工場を探す必要すらなく、社会が斧を提供してくれるのをただ「座って待つ」ことができ、発信者は気にする必要がありません。呼び出し先の実装、ファクトリを無視して、Spring 依存関係注入を待ちます
要するに、依存関係の注入とは、必要なものが自分で作成されたのではなく、サードパーティまたはコンテナによって提供されることを意味します。このような設計は、直交性、いわゆる疎結合に準拠します。
伊谢尔伦2017-05-15 16:53:13
個人的に理解しているのですが、依存関係の注入とは、呼び出し元がコンポーネントを宣言するだけでコンポーネントの制御を取得でき、コンポーネントの依存関係の管理、検索、読み込みが外部で完了することを意味します。
AngularJS では、$injector
进行这项工作。
比如,我在一个服务中注入了$http
,并用hehe
:
PHP中文网2017-05-15 16:53:13
依存関係の注入は、オブジェクトのライフサイクル、いつ作成されるか、いつ破棄されるかを気にする必要がないことを意味し、オブジェクトのライフサイクルはフレームワークによって直接管理されます。依存関係の注入を提供します。
世界只因有你2017-05-15 16:53:13
1 点追加させてください: 依存関係の注入と制御の反転は、実際には同じ概念です。
@Wang_Bourne
http://www.cnblogs.com/kinglongdai/p/3269049.html
MOOC: http://www.imooc.com/video/4907
怪我咯2017-05-15 16:53:13
理論的な理解は常に少し難解に感じられますが、RoboGuice などの依存性注入のオープンソース フレームワークを検討することをお勧めします。実際の知識は実践から得られます。 申し訳ありませんが、カテゴリを読んでいませんでした。RoboGuice は Android 用のフレームワークですが、原理は同じです。
巴扎黑2017-05-15 16:53:13
依存性注入 (DI) は制御反転 (IoC) とも呼ばれます。つまり、クラスとメソッドとメソッドの間の関係がサードパーティ (構成ファイルなど) を通じて「注入」され、クラスやメソッドは必要ありません。クラスメソッド間の呼び出し関係を解決します。従来のアプリケーションは通常、クラスが依存する他のオブジェクトをクラス内の実行コード内で積極的に作成するため、クラス間の結合が密になり、クラスのテストと分離が困難になり、最終的にはシステムの拡張と保守が非常に困難になります。依存性注入は、コンポーネント間の依存関係、構成、ライフサイクル管理を解決するために使用され、オブジェクト制御を転送することで、オブジェクト間の結合問題を解決できます。さらに重要なのは、アプリケーション システムの構造です。非常に柔軟になります。これは、オブジェクト指向設計ルールの 1 つである依存関係設計原則、有名なハリウッドの原則をよく反映しています。あなた。あなた)
習慣沉默2017-05-15 16:53:13
angular.js にはこの種の考え方がたくさん含まれています。
include var net = require('net');
全部紫色です。
天蓬老师2017-05-15 16:53:13
依存性の注入
実際には、現在のオブジェクトの特性属性が外部から注入されたオブジェクトによって決定されることを意味します。
たとえば、家族が靴工場を開く場合、メイクという靴の製造方法があります。
市場の需要により、一部の有名なスポーツシューズ会社はあなたの工場に原材料の大きな袋を提供し、それをOEMで入手することができます。
リーリーこのように、ナイキがあなたにOEM作業を依頼し、あなたにナイキの素材を提供した場合、あなたはナイキのスポーツシューズをあなたに提供し、アディダスの靴を生産することができます。
つまり、あなたの靴工場が生産する靴がA社製かN社製かは、材料をA社が提供するかN社が提供するかによって決まります。
怪我咯2017-05-15 16:53:13
オブジェクト指向プログラミングでは、プログラムの結合度が低いほど、プログラムの可読性と保守性が高くなります。制御の反転 (IoC) は、一般的に使用されるオブジェクト指向プログラミングの設計原則です。この原則を使用すると、結合を減らすことができます。依存性の注入は、制御の反転の最も一般的に使用される実装です。
依存性注入について話すための特別な訪問
为情所困2017-05-15 16:53:13
非常に単純な個人的な理解、依存関係の注入は実際には難しくありません、それは非常に自然なことです、実生活はプログラミングよりも実際には難しいです:
依存性の注入: あなたは人間です、あなたは狩りに行きたい、あなたは銃が必要です, 現時点では 2 つのオプションがあります。最初のオプションは自分で作成することですが、これは明らかに推奨されません。 2 番目のオプションは、店に行って購入することです。これは依存性注入です、それは外部から注入されるためです、それを購入することで、あなたが作成した問題を解決でき、それを注入することで、 、依存を解消できます。なんて単純なことでしょう。
制御原理の逆転: 具体的なものではなく、抽象的な概念に頼ってください。 銃を購入するときは、銃の抽象的な概念を頭の中に入れておく必要があります。頭の中にある抽象的なイメージで十分です。そして、あなたは神によって創造されたのです。神があなたをハンターとして試したいとき、神があなたのために銃を作るのはもっと面倒ですが、あなたのカバンの中に銃の説明書があれば、それは簡単です。 「すぐに銃を手に入れるのを手伝ってあげるよ。」もっと乱暴に言うと、特定の銃に依存するのではなく、その銃のマニュアルに依存するという制御原理の逆転です。 明らかに、これは私たちが実生活で行っていることです。
コンテナ: それは現実世界の超強力な工場に相当します。神 (プログラマー) はそれを常にアップグレードする責任があり、あなたが彼に何を言っても、彼はあなたがそれを作るのを手伝い、あなたに無料で与えます。 。 あなたのために。工場はあなたのために汚れ仕事をすべてやってくれるので、あなたには人生を楽しむことだけが責任があります。このファクトリーは、依存関係の注入を実装する際の困難な場所です。
依存性注入は共産主義社会に相当します。