戦略パターンが制御の反転にどのように関連しているかを正確に説明できる人はいますか?
4 に答える
戦略パターンを使用する場合、他のクラスが具体的な戦略ではなくインターフェースに依存するようにします。これを行う1つの方法は、適切な戦略を作成する方法をクラスに理解させるのではなく、それをインターフェースとして使用するクラスに具体的な戦略を注入することです。これがIoC/依存性注入の出番です。
アイデアは、使用する戦略を定義するある種の構成または決定クラスがあるということです。これはIoCフレームワークである可能性がありますが、必ずしもそうである必要はありません。このクラスは、システムの状態または構成に基づいた適切な戦略で他のクラスを構成する責任があります。具体的な戦略は、コンストラクターまたはプロパティセッターを介して作成および注入されるため、インスタンス化される戦略クラスの「制御」は「反転」されます。これは、それに依存するクラスではなく、外部から行われます。
それ自体では、パターンは制御の反転を導入しません。スワップ可能なアルゴリズムがコントローラーに注入されるようにパターンの開発者がそれを実装する場合、それは反転です。一方、実装者が他のソース (構成など) から使用するアルゴリズムを取得するか、他の手段を介してコントローラーのコンストラクターでそれを決定する場合、それは単なるありふれたタイプです。コードの。
IOC はまったく別のものではありません。IOC と DI の詳細については、こちらを参照してください。
IOC は、servicelocator パターンが別のオプションであるため、戦略パターン (手段) を使用して達成できるプリンシパル (目的) と考えることができます。