所以我今天写了一个方法,结合使用嵌套的switch语句,代码看起来相当干净简洁,但我被告知嵌套switch语句通常不是最好的方法因为他们可能会对添加的更多开关语句感到困惑。这里是什么样子我的代码示例:Java中嵌套开关语句的替代
EnumOne enumOne;
EnumTwo enumTwo = null;
EnumTwo enumThree = null;
switch (enumOne) {
case CASE_ONE:
switch (enumTwo){
case A: enumTwo = EnumTwo.B; break;
case C: enumTwo = EnumTwo.D; break;
default: break;
}
switch (enumThree) {
case AA: enumThree = EnumTwo.BB; break;
case CC: enumThree = EnumTwo.DD; break;
default: break;
}
break;
case CASE_TWO:
case CASE_THREE:
switch(EnumTwo) {
default: break;
}
switch (enumThree) {
case AA: enumThree = EnumTwo.XX; break;
case CC: enumThree = EnumTwo.YY; break;
default: break;
}
break;
default:
break;
}
所以我的问题是,从本质上讲,这将是一个合适的替代这些switch语句?
你在用什么?建模一个状态机? – flup 2013-04-10 16:18:29
那么enumTwo设置它的值取决于enum的一,二和三的值?为什么不在enumTwo中返回一个返回新值的方法?类似于状态模式。 – 2013-04-10 16:20:54
使用大量嵌套的switch/if语句通常会显示设计缺陷,特别是如果您使用面向对象语言执行此操作,则应该使用它们上可用的功能。 – gersonZaragocin 2013-04-10 17:48:02