Java中 switch-case 如何优化?

代码样式如下:

switch(code) {
        case 1:
            //调用方法
            method1();
            break;
        case 2:
            //调用方法    
            method2();
            break;
        case 3:
            //调用方法
            method3();
            break;
        case 4:
           //调用方法
           method4();
           break;
        case 5:
            //调用方法
            method5();
            break;
        case 6:
            //调用方法
            method6();
            break;
        case 7:
            //调用方法
            method7();
            break;
        case 8:
            //调用方法
            method8();
            break;
        case 9:
            //调用方法
            method9();
            break;
        case 10:
            //调用方法
            method10();
            break;
        case 11:
            //调用方法
            method11();
            break;
        case 12:
            //调用方法
            method12();
            break;
        case 13:
            //调用方法
            method13();
            break;
        case 14:
            //调用方法
            method14();
            break;
        case 15:
            //调用方法
            method15();
            break;
        case 16:
            //调用方法
            method16();
            break;
        case 17:
            //调用方法
            method17();
            break;
        default:
            //调用方法
            methodDefalut();
            break;
}

这段switch代码已经是很整洁了,但由于条件太多,switch语句就变得很长了!而且这样写不符合开闭原则,每增加一个条件,就又要修改这段代码!可读性也会随着长度增长而变差!
所以,我想请教各位大佬,如何写一个优雅的代码来替换上面这段代码?
我有已经想到两种方法:
(1)使用容器,每个方法都换成一个类,但这样的话,就要多加 17个类!(如果能解决类的数量过多问题,就好了)
(2)使用反射,但是反射的速度太慢了,这段代码是放在一个接口里面的,性能太差会影响接口吞吐速率!
我们可以看到上面两种方法都有一些缺点,所以我想请教各位,有没有什么更好的方法?谢谢!

阅读 1.5k
评论
    3 个回答
    • 3.6k

    不需要17个类,17个function就行了