Strategy パターンとは
Strategy パターンは、コンピュータープログラミングの領域において、アルゴリズムを実行時に選択することができるデザインパターンである。
ようするにアルゴリズムの実装部分をごっそり交換可能にするということのようだ。
example
Strategyパターンを使って、「じゃんけん」プログラムを実装する。
- Hand: じゃんけんの「手」を表す
- Strategy: じゃんけんの「戦略」を表すインターフェース
- WinningStrategy: 戦略の実装。勝ったら次も同じ手を出す戦略
- ProbStrategy: 戦略の実装。1回前の手から次の手を確率的に計算する戦略
- Player: じゃんけんを行うプレイヤーを表す
- Main: サンプルコードの実行を行う
役割
- Strategy役: 戦略を利用するインターフェースを定める役。サンプルにおけるStrategyインターフェース
- ConcreteStrategy: Strategy役のインターフェースを実際に実装する役。サンプルにおけるWinningStrategy, ProbStrategyクラス
- Context役: Strategyを利用する役。ConcreteStrategy役のインスタンスを持っていて、必要に応じてそれを利用する。サンプルにおけるPlayerクラス
まとめ
- Strategyパターンでは、アルゴリズムの部分を他の部分と意識的に分離する。アルゴリズムとインターフェースの部分だけを規定する。
- アルゴリズムを改良したい場合、Strategyパターンを使っていればStrategy役のインターフェースを変更しないように注意しConcreteStrategy役だけを変更すれば良い。
- 委譲によりアルゴリズムの切り替えが容易
関連パターン
- PHP7でデザインパターン入門20/23 Flyweightパターン - Do Something
- PHP7でデザインパターン入門8/23 Abstract Factoryパターン - Do Something
- PHP7でデザインパターン入門19/23 Stateパターン - Do Something
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (399件) を見る