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)。

操作 → 動いたクラス / メソッド

  1. 操作: 料金戦略「通常価格」で定価 1000 円を計算
  2. → PriceCalculator.calculate(listPrice)
  3. → RegularPricingStrategy.price(listPrice) … いま動いている具象 Strategy
  4. → 結果 1000 円
このパターンの解説記事 ↗

記事は考え方・別サンプルの解説です。このページのデモ実装とはソースが異なります (クラス名・題材はデモ用に簡略化しています)。