当switch 有很多情况要判断的时候,代码会很长很难看,而且是违反面向对象思想的。如果每个情况触发的都是由继承自同一个基类或实现同一个接口的话。如:
abstract class A{
public void doAction(){
}
}
class a1 extends A{
public void doAction(){
System.out.println("a1 doing ");
}
}
class a2 extends A{
public void doAction(){
System.out.println("a2 doing");
}
}
.....................
..........
这样如果有个需求是要不同的a来处理的话,如果我们像下面这样写的话
A a;
case 'a1':
a = new a1();
case 'a2':
a = new a2();
case 'a3'
a = new a3();
.......
a.doActin();
代码会很长,但是如果我们把所要操作的类的名字作为参数传进来,然后利用动态加载的话会省下很多代码行
A a = Class.forName("类名").newInstance();
a.doAction();
有些情况还可以利用多态对switch 对switch语句进行改造。具体情况具体分析