Design Pattern | Strategy Pattern(戦略パターン)

Strategyパターンとは?

  • Strategyという英単語は戦略という意味である。プログラミングの場合はアルゴリズムと考えると理解しやすい。
  • プログラムは問題を解決するために書かれる。問題を解決するために特定のアルゴリズムが実装される。Strategyパターンは、アルゴリズムを実装した部分をひそかに差し替えられる方式である。
  • システムを柔軟に変更、拡張できるようにする。
  • ユーザー(Client)が自分に合う戦略(Strategy)を選択し、そのロジックを実行できるようにする方法である。
  • GoFのデザインパターンでは、振る舞いに関するデザインパターンに分類される。

サンプルプログラム

じゃんけんをするプログラムである。ランダムに手を出す戦略と、グーだけを出す戦略がある。

Class Diagram
Strategy Pattern Class Diagram

例では、じゃんけんの手を表すHandクラス、手の選択と結果学習を表すStrategyインターフェース、具象Strategy、そして手の選択をStrategyへ委譲するPlayerクラスを定義する。

メリット

クライアントを変更せずにアルゴリズムを差し替えられる。関連するアルゴリズムを共通インターフェースの背後にカプセル化でき、新しい戦略の追加や実行時の振る舞い変更がしやすい。