オブジェクト x には依存関係があることを読み続けています。悪いと言う人もいれば、状況によっては大丈夫という人もいますが、そもそも意味がわかりません。これを見た:
しかし、そもそも依存関係の概念を理解していませんでした。そのタグは実際には適切な定義を提供しましたが、例を期待していました.
オブジェクト x には依存関係があることを読み続けています。悪いと言う人もいれば、状況によっては大丈夫という人もいますが、そもそも意味がわかりません。これを見た:
しかし、そもそも依存関係の概念を理解していませんでした。そのタグは実際には適切な定義を提供しましたが、例を期待していました.
依存性注入について話すとき、私は通常、オブジェクトではなくクラスに依存性があると言います。
クラスが存在する必要があり、特定の方法で機能する可能性がある場合、クラスはクラスA
に依存しています。たとえば、 classに への呼び出しがある場合、それは class に依存しています。クラスがなくなったり変更されたりすると、クラスが壊れる可能性があります。B
B
A
new B()
B
B
A
一部の言語では、クラスが代わりに依存できるようにすることで、依存関係を壊すことができますinterface
。I
代わりに interface とB
implementsに依存している場合I
、 B はなくなり、C
これも implementsI
に置き換えることができA
、まったく変更する必要はありません。ここでの例として、オペレーティング システムのドライバーを使用できます。ディスクを交換すると、「ディスク ドライブ」インターフェイスを実装する新しいドライバーを取得できますが、オペレーティング システムは、知らないうちに同じ方法でディスクと通信します。正確にどのタイプのディスクであるか。
依存性注入とは、クラスではなくインターフェイスに依存できるようにすることです。基本的にはnew B()
、実装するオブジェクトが必要であると宣言するだけI
で、適切な実装が注入されます。あなたのクラスは、そのクラスまたは存在するA
という考えを持っている必要はありません。B
C
「依存関係」は、コンテキストに応じて (しゃれた意図で) さまざまなことを意味します ;)
この場合、それは実際には「仕事を成し遂げるために、(おそらく多くの)特定の「オブジェクト」が必要か?」という意味です。
たとえば、コンポーネントには「印刷」するものが必要です。依存関係は「印刷」ですが、要求されたオブジェクトは、HP Laserjet 9200、Oki ドット マトリックス、または .pdf ファイルに印刷できます。
別の言い方をすれば、ここで「依存関係」を「プラグイン」という言葉に置き換えても、同じ意味を保つことができます。
「それが役立つことを願っています..