Strategy Pattern
ストラテジーパターンはアルゴリズムを独立した戦略オブジェクトとしてカプセル化し、インターフェースを通じて実行時にアルゴリズムを切り替え、条件分岐を避ける。
目的
アルゴリズムのファミリーを交換可能にし、クライアントをアルゴリズムの実装から切り離する。
メカニズム
戦略インターフェースを定義し、各アルゴリズムがそれを実装する。コンテキストは戦略への参照を持ち、処理を委譲する。実行時に戦略オブジェクトを差し替えると振る舞いが変わる。ファクトリパターンと組み合わせて戦略インスタンスを生成する。
ユースケース
- アルゴリズムの切り替え
- if 文の分岐を減らす
- 支払いやソートの戦略