Java | switch文を戦略パターンにリファクタリングする練習問題」

Java Java
スポンサーリンク

「switch文を戦略パターンにリファクタリングする練習問題」をいくつか用意しました。実務でありがちなケースを題材にしています。


練習問題1:注文ステータス管理

元コード(switch)

switch (status) {
    case "NEW":
        System.out.println("新規注文を登録しました");
        break;
    case "PROCESSING":
        System.out.println("注文を処理中です");
        break;
    case "SHIPPED":
        System.out.println("注文を発送しました");
        break;
    case "CANCELLED":
        System.out.println("注文をキャンセルしました");
        break;
    default:
        throw new IllegalArgumentException("不明なステータス: " + status);
}
Java

課題

  • このswitch文を戦略パターンにリファクタしてください。
  • 各ステータスごとに「戦略クラス」を作り、Map<String, Handler>で管理する形を目指しましょう。

練習問題2:支払い方法の処理

元コード(switch)

switch (paymentMethod) {
    case "CREDIT":
        System.out.println("クレジットカードで支払い");
        break;
    case "CASH":
        System.out.println("現金で支払い");
        break;
    case "BANK":
        System.out.println("銀行振込で支払い");
        break;
    default:
        throw new UnsupportedOperationException("未対応の支払い方法: " + paymentMethod);
}
Java

課題

  • 戦略パターンを使って「支払い処理」を分離してください。
  • 各支払い方法ごとにクラスを作り、PaymentContextから呼び出せるようにしましょう。

練習問題3:ログレベルの出力

元コード(switch)

switch (logLevel) {
    case "INFO":
        System.out.println("[INFO] 通常ログ");
        break;
    case "WARN":
        System.out.println("[WARN] 注意ログ");
        break;
    case "ERROR":
        System.out.println("[ERROR] エラーログ");
        break;
    default:
        System.out.println("[DEBUG] デバッグログ");
}
Java

課題

  • 戦略パターンで「ログ出力戦略」を作成してください。
  • LogContextが入力されたレベルに応じて適切な戦略を選び、出力するようにしてください。

練習の進め方

  1. switch文を確認 → 値ごとに処理が分かれていることを理解。
  2. 戦略インターフェースを設計HandlerPaymentStrategyなど。
  3. 具体戦略クラスを作成 → 各caseの処理をクラスに移す。
  4. Mapやenumで戦略を選択 → switchをなくして戦略を呼び出す。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました