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

Java Java
スポンサーリンク

これまで扱ってきた switch → 戦略パターン → enum+戦略パターン → Map+ラムダ の手法を比較表に整理してみます。


条件分岐リファクタ手法の比較

手法特徴メリットデメリット適用場面
switch文値ごとに分岐シンプルで直感的、初心者にも分かりやすいcaseが増えると肥大化、フォールスルーの危険、責務集中小規模な分岐、学習用コード
戦略パターンインターフェース+クラス分割責務分離、拡張性高い、単体テスト容易クラス数が増える、やや冗長大規模処理、複雑なロジック、外部連携
enum+戦略パターンenumに戦略を紐付け型安全、拡張容易、switch不要、状態管理に強いenumに依存する設計になるステータス管理、権限管理、状態遷移
Map+ラムダキーと処理をMapに登録軽量、シンプル、追加容易、コード量少ない複雑処理には不向き、テスト分離しづらい小規模分岐、簡単な処理切替、ログ出力

選び方の指針

  • 小規模・簡単な分岐 → switch文 or Map+ラムダ
  • 中規模・複雑な処理 → 戦略パターン
  • 状態管理やステータス制御 → enum+戦略パターン
  • 拡張性・保守性を重視 → 戦略パターン/enum+戦略

実務での使い分け例

  • 注文ステータス管理 → enum+戦略パターン(型安全で拡張性が高い)
  • 支払い方法の処理 → 戦略パターン(外部サービス連携など複雑化しやすい)
  • ログレベル出力 → Map+ラムダ(軽量で十分)
  • 簡単なメニュー選択 → switch文(学習用や小規模ならOK)

👉 これで「どの場面でどの手法を選ぶべきか」が整理できました。
次のステップとして、実際の業務コードを題材に「どのリファクタ手法が最適か」を一緒に検討してみるとさらに理解が深まります。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました