フレームワークの開発プロセス中に、依存関係反転、依存関係反転、制御の反転、依存関係注入、IOC という用語をよく耳にします。原則。 依存関係逆転の原則 が関連しています。これらの用語を見てみましょう:
制御の反転 (IOC)。これは基本的に Spring インタビューで行われることです質問しました。IOCの正式名称はInversion of Controllerです。IOCは必ずしもSpringの機能ではありません。SpringはIOCを利用した基本的なフレームワークです。簡単に理解すると、過去に単純な実装によってビジネスコードが重複して使用されていました。メソッドを変更する必要があると面倒です , パーミッションは開発者によって完全に制御されます いずれにしても、開発者はいくつかのデザインパターンを通じて、関係に基づいて開発することはありません. 実装すべき機能が実装されている限り、権限はプログラムによって制御されます;
依存関係注入 (DI)、正式名は依存関係注入です。単純に理解すると、操作する必要があるオブジェクトはコンストラクターを通じて構築され、get /set、インターフェイス、および新しいオブジェクトは、渡された外部オブジェクトを通じて注入されます。これは依存関係の注入であり、Spring を使用する方が優れています。 のフレームワーク) 低レベルのモジュール (低レベル) に依存しないでください。高レベルのモジュールと低レベルのモジュールは、抽象化を通じて相互に依存する必要があります。さらに、抽象化は特定の実装の詳細に依存すべきではなく、特定の実装の詳細は抽象化に依存する必要があります
;#モジュールの概念
簡単に言うと、呼び出しチェーンの では、呼び出し元は上位レベルに属し、呼び出し先は下位レベル ## に属します。 #。なぜそのような設計が使用されるのでしょうか? 根本的な原因は疎結合です。そうでない場合、高レベルのモジュールは低レベルのモジュールに強く結合され、高レベルのモジュールは基礎となるモジュールのコードの影響を受けません。実際のシナリオではこのルールに従うことが完全に必要ですか? ウールの布ですか?一般的な例を見てみましょう:
MVC アーキテクチャ: 一般的に使用されるメソッドは、Controller-->Service-->Dao です。Controller は Service の上位モジュールであり、Service もまた、Service の上位モジュールですDao. ですが、実際のビジネスシーンでは直接インジェクションで開発しますが、もちろん直接インジェクションを行わずインターフェース経由でオブジェクトを取得する場合もあり、作業コストが増加します。
ハリウッド原則
ハリウッド原則は、「Don't call us, we'll call you」の略です。一般科学によると、ハリウッドでは、エンターテイメント会社に履歴書を提出した後、次のことができます。家に帰って待つだけです。舞台芸術会社はエンターテインメントプロジェクト全体を完全に管理しているため、俳優は会社の仕事を受動的に受け入れ、必要なときにのみパフォーマンスを完了することができます。これは依存関係逆転の原則と一致しており、すべての依存関係逆転の原則はハリウッド原則とも呼ばれます。 ハリウッド原則の具体的な実施形態は、テンプレート メソッド パターンです。すべてのコンポーネントは受動的であり、コンテナーがすべてのコンポーネントの初期化と呼び出しを担当します。これも基本的なフレームワークとして考慮すべき点であり、主に次のようなメリットがあります。 #シングルトンと抽象化の削減 ファクトリの依存関係を削減Spring IOC コンテナがオブジェクトのライフサイクルとオブジェクト間の関係を担当するというものです。
<code>TestBean(Test test){<br> this.test = test;<br>}</code>
JavaBean オブジェクトの場合、通常、getter メソッドと setter メソッドを通じてオブジェクトのプロパティにアクセスし、設定します。したがって、現在のオブジェクトは、依存するオブジェクトに対応する setter メソッドを提供するだけでよく、このメソッドを通じて、対応する依存オブジェクトを挿入されたオブジェクトに設定できます。コンストラクター インジェクションと比較すると、セッター インジェクションはより緩やかで柔軟です。いつでもインジェクションできます
<code>public class TestBean {<br><br> private Test test;<br><br> public void setTestBean(Test test) {<br> this.test = test;<br> }<br>}</code>
インターフェイス モード インジェクションは、依存オブジェクトの実装が必要なため、より横暴です。一般に、基本的なフレームワークにはほとんど存在しませんが、ビジネス分野ではよく使用されます。
現在、Spring の主流のインジェクション方法は主にアノテーションを通じて実装されており、これらはすべてメタアノテーション @Component に基づいており、@Component を使用して多くの派生アノテーションも生成されます。
rree以上がJava の依存性反転の設計原則とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。