【すとらてじーぱたーん】
Strategyパターン とは?
最終更新:
💡 処理のやり方を、差し替えられる部品にする
処理のやり方を共通の呼び出し口で扱い、利用する側から差し替えられるように分離するデザインパターン。たとえば同じ並べ替え処理に、点数順や名前順の比較方法を渡す。戦略の選択や設定は別に必要。
📌 このページのポイント
- 複数のやり方を共通の呼び出し口で扱う
- 利用する側は、選んだ戦略へ処理を任せる
- 比較や計算の方法を差し替える場面に使う
- 選択・設定・テストまで不要になるわけではない
Strategyって、どこを差し替えるの?
ある処理の「やり方」を分けて、共通の呼び出し口から使うんだ。利用する側は、選んだ戦略に処理を任せる。たとえば一覧を並べるとき、点数順と名前順の比較方法を差し替えるイメージだよ。
具体的なAPIにも、出てくる?
if文を、全部なくす方法?
分岐が必ずなくなるわけではないよ。処理ごとに分散していたやり方を、戦略としてまとめる設計だね。どの戦略を使うか決める場所や設定は必要。種類が少なく変更も少ない処理なら、単純な分岐で十分な場合もあるよ。
新しい方法を足しても、何も直さなくていい?
共通の呼び出し口に合う戦略を追加すれば、利用する処理を保ちやすくなる。でも選択画面や設定への登録、入力の条件、テストは確認しよう。「新しいクラスを1つ足せば、既存のどこも変更不要」とは保証しないんだ。
どこをそろえておけばいい?
入力、戻り値、エラーなど、利用する側が期待する扱いをそろえることだよ。Comparatorなら、比較の結果が順序の規則を守る必要がある。部品を差し替えられる形でも、その部品の振る舞いが合っているかを確かめるんだ。
まとめ:ざっくりこれだけ覚えればOK!
「Strategyパターン」って出てきたら「処理のやり方を、差し替えられる部品にする設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Strategy Pattern」 = 戦略パターン
💬 Strategyは「戦略」。処理のやり方を選び、共通の呼び出し口から使うイメージだよ。