Java | フォールスルーのある switch を戦略パターンで安全に置き換える 練習問題

Java Java
スポンサーリンク

「フォールスルーのある switch を戦略パターンで安全に置き換える練習問題集」を用意しました。複数条件をまとめたいケースを題材にして、switch文のフォールスルーを戦略パターンへリファクタリングする練習ができます。


練習問題1:季節判定

元コード(フォールスルーあり)

switch (month) {
    case 3:
    case 4:
    case 5:
        System.out.println("春");
        break;
    case 6:
    case 7:
    case 8:
        System.out.println("夏");
        break;
    case 9:
    case 10:
    case 11:
        System.out.println("秋");
        break;
    case 12:
    case 1:
    case 2:
        System.out.println("冬");
        break;
    default:
        System.out.println("不正な月です");
}
Java

課題

このフォールスルーを使った季節判定を、戦略パターンで安全に置き換えてください。


練習問題2:HTTPステータス分類

元コード(フォールスルーあり)

switch (statusCode) {
    case 200:
    case 201:
    case 204:
        System.out.println("成功レスポンス");
        break;
    case 400:
    case 404:
        System.out.println("クライアントエラー");
        break;
    case 500:
    case 503:
        System.out.println("サーバーエラー");
        break;
    default:
        System.out.println("未知のステータス");
}
Java

課題

成功系・クライアントエラー系・サーバーエラー系をそれぞれ戦略クラスに分け、Mapで管理してください。


練習問題3:ユーザー権限判定

元コード(フォールスルーあり)

switch (role) {
    case "ADMIN":
    case "SUPERUSER":
        System.out.println("全権限を付与");
        break;
    case "USER":
    case "GUEST":
        System.out.println("制限付き権限を付与");
        break;
    default:
        System.out.println("不明な権限");
}
Java

課題

権限ごとに戦略クラスを作り、RoleContextから呼び出せるようにしてください。


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

元コード(フォールスルーあり)

switch (logLevel) {
    case "INFO":
    case "DEBUG":
        System.out.println("通常ログ");
        break;
    case "WARN":
    case "ERROR":
        System.out.println("重要ログ");
        break;
    default:
        System.out.println("未知のログレベル");
}
Java

課題

ログレベルごとに戦略クラスを作り、Map+戦略パターンで安全に置き換えてください。


練習の進め方

  1. switch文を確認 → フォールスルーでまとめている条件を特定。
  2. 戦略インターフェースを設計HandlerStrategyを定義。
  3. 具体戦略クラスを作成 → 各グループの処理をクラスに分離。
  4. Mapやenumで戦略を選択 → switchをなくして戦略を呼び出す。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました