Strategy
料金計算を差し替える
アルゴリズムを差し替える
このデモで分かること: 料金の計算方法だけを差し替える
このデモで Strategy を使う理由
- 変えたいのは「料金の計算方法」だけ(通常/会員/セール)。
- if や switch で分岐すると、戦略が増えるたびに計算処理そのものが膨らむ。
- Strategy なら計算の呼び出し側は同じまま、差し替える具象クラスだけを変えればよい。
パターンなし vs このパターン(イメージ)
記事の本編ではなく、このデモ題材を if の山にした場合との対比です(疑似コード)。
パターンなし
// パターンなし(イメージ)
if ("member".equals(type)) {
return price * 0.9;
} else if ("sale".equals(type)) {
return price * 0.7;
}
return price;
// → 種類が増えるたびここが膨らむ
Strategy あり
// Strategy calculator.setStrategy(strategy); // 差し替え return calculator.calculate(price); // → 呼び出し側は同じ、具象クラスだけ増やす
デモ
結果
1000 円
定価のまま(割引なし)
このデモで使っている実装クラス
RegularPricingStrategy
料金戦略を切り替えると、上記の具象クラスが差し替わります(Strategy)。
操作 → 動いたクラス / メソッド
- 操作: 料金戦略「通常価格」で定価 1000 円を計算
- → PriceCalculator.calculate(listPrice)
- → RegularPricingStrategy.price(listPrice) … いま動いている具象 Strategy
- → 結果 1000 円
このパターンの解説記事 ↗
記事は考え方・別サンプルの解説です。このページのデモ実装とはソースが異なります (クラス名・題材はデモ用に簡略化しています)。