DEV Community

Tuan
Tuan

Posted on

Refactor "switch" statements in case have large sets of "case" clauses

import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;

public class SwitchRefactor {

    // Define actions for each case
    private static final Map<String, Consumer<String>> ACTION_MAP = new HashMap<>();

    static {
        ACTION_MAP.put("case1", SwitchRefactor::actionForCase1);
        ACTION_MAP.put("case2", SwitchRefactor::actionForCase2);
        // Add more cases as needed
    }

    // Method for executing action for case 1
    private static void actionForCase1(String param) {
        System.out.println("Executing action for case 1 with parameter: " + param);
    }

    // Method for executing action for case 2
    private static void actionForCase2(String param) {
        System.out.println("Executing action for case 2 with parameter: " + param);
    }

    // Method for executing actions based on the given case
    public static void executeAction(String caseValue, String param) {
        Consumer<String> action = ACTION_MAP.get(caseValue);
        if (action != null) {
            action.accept(param);
        } else {
            System.out.println("No action found for case: " + caseValue);
        }
    }

    public static void main(String[] args) {
        // Example usage
        String caseValue = "case1";
        String param = "example";
        executeAction(caseValue, param); // Output: Executing action for case 1 with parameter: example
    }
}

Enter fullscreen mode Exit fullscreen mode

Top comments (0)