【すとらてじーぱたーん】
Strategyパターン とは?
💡 アルゴリズムを「差し替え可能な部品」にする
📌 このページのポイント
if文で切り替えるのとどう違う?
具体例を教えて?
EC サイトの送料計算。通常配送、速達、コンビニ受取でそれぞれ計算ロジックが違う。Strategy パターンなら NormalShipping、ExpressShipping、ConvenienceShipping を作って、注文時に差し替える。新しい配送方法(ドローン配送!)が追加されても既存コードは変更不要だよ
JavaScriptでの実装は?
JSではクラスよりも関数をそのまま渡す方がシンプル。const strategies = { normal: (weight) => weight * 100, express: (weight) => weight * 200 }; const calc = (type, weight) => strategies[type](weight); のように。TypeScriptなら型で戦略のインターフェースを定義できるよ
他のパターンとの関係は?
StateパターンはStrategyパターンに似ているけど、状態遷移を含む点が異なる。Factoryパターンで戦略オブジェクトを生成することも多い。Template Methodはアルゴリズムの骨組みを親クラスで定義して一部をサブクラスで実装する方式で、Strategyのコンポジション版と言える。用途に応じて選ぼうね
📖 おまけ:英語の意味
「Strategy Pattern」 = 戦略パターン
💬 Strategy(戦略)を状況に応じて切り替える。GoFデザインパターンの代表格だよ