制御の反転 – 定義

Inversion of Control (IOC) は、すべてのフレームワーク (または開発および実行フレームワーク) に共通のアーキテクチャ パターンです。これは、ソフトウェアの実行フローがアプリケーション自体の直接制御下ではなく、フレームワークまたはその下にあるソフトウェア層の制御下にあるという原則に従って機能します。

制御の反転は一般的な用語です。問題に応じて、IoC にはさまざまな形式または表現があります。最もよく知られているのは、依存関係逆転の原則です。これは、 オブジェクト指向プログラミングにおいて、オブジェクト間の依存関係を分離できるようにする設計パターンです。

制御の反転の原理

IoC では、フレームワークがプログラムの主な実行を処理します。アプリケーションのアクティビティを調整および制御します。次に、ユーザー プログラムは、フレームワークによってこの目的のために提供される API を使用して、コード ブロック間の厳密な関係を持たずにコード ブロックを定義します。これらのコード ブロックは、それらの呼び出しを担当するフレームワークの裁量に任されています。

IoC は、「電話しないでください。私たちが電話します。」というハリウッドの原則によって体現されています。この原則によれば、制御の反転はフレームワーク (または基礎となるソフトウェア層) とアプリケーションの間で行われます。フレームワークへの呼び出しを管理するのはアプリケーションではなくなり、フレームワークへの呼び出しを管理します。

例 :

または、ユーザーに関する情報を要求するアプリケーション。古典的なアプローチによれば、プログラムの本体はヒューマン コンピューターインタラクション(HMI) ビルディング ブロックをレイアウトするだけでなく、その実行シーケンスも制御します。

擬似言語の例:
print 'Votre nom :'
read nom
traite nom
print 'Votre âge :'
read age
traite age
...

IoC を使用すると、フレームワークは、多くの場合、メイン関数の形式で実行フローの制御を保証します。プログラムの本体は、処理と、程度は低いですが HMI ビルディング ブロックのみを処理します。

擬似言語の例:
framework <- init
q1 <- question 'Votre nom :'
attache_traitement q1, mon code
q2 <- question 'Votre âge :'
attache_traitement q2, mon_autre_code
boucle_principale framework

ここでは、最初にフレームワークが初期化され、次にプログラムの GUI を構成するコンポーネントが作成されます。これらのコンポーネントには、ユーザーのアクションによってアクティブになったときにフレームワークによって実行される処理が付加されます。そして最後に、アプリケーションの制御がフレームワークに渡されます

制御の反転 - 定義

依存関係注入の原則

原則は、オブジェクト間の依存関係のリンクを分離することです。オブジェクトプログラミングでは、次の条件のうち少なくとも 1 つが当てはまる場合、タイプAのオブジェクトはタイプBのオブジェクトに依存します。

  • A はタイプB (構成による依存) の属性を持ちます。
  • A はタイプB (継承による依存) です。
  • A は、タイプBのオブジェクトに依存するタイプCの別のオブジェクトに依存します (推移性による依存)。
  • AのメソッドはBのメソッドを呼び出します。

A がBに依存する場合、これはA を作成するにはB が必要であることを意味しますが、実際には常にそうであるとは限りません。

依存関係を削除するには、次の方法が考えられます。

  • A がBで呼び出すことができるすべてのメソッドを含むインターフェイスIを作成します。
  • B がインターフェースIを実装していることを示します。
  • Bへのすべての参照を、 AのインターフェイスIへの参照に置き換えます。

発生する問題は、インスタンス化する方法がわからないときに、 AI を実装するオブジェクトがあることです。解決策は、たとえば、型Bのオブジェクトbを作成し、それを型Aのオブジェクトに注入することです。実際に注射ができる

  • インスタンス化時: オブジェクトb をAのインスタンス化に渡します。
  • 修飾子によって: オブジェクトb をAのメソッドに渡します。このメソッドは、たとえば属性 ( setter ) を変更します。
制御の反転 - 定義

使用

これらの技術は、アプリケーション サーバー上に構築されたアプリケーションに広く使用されています。

制御の反転 - 定義
  1. عكس التحكم – arabe
  2. Inversion of Control – allemand
  3. Inversion of control – anglais
  4. Inversión de control – espagnol
  5. وارونگی کنترل – persan
  6. Inversion of control – hébreu

制御の反転 – 定義・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。