300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 如何避免冗长 if-else / switch 分支判断

如何避免冗长 if-else / switch 分支判断

时间:2020-02-25 23:56:09

相关推荐

如何避免冗长 if-else / switch 分支判断

有些时候分支判断很冗长,而且有时候同样的分支判断还会多个地方重复使用。这样的分支判断代码即不美观也不易扩展。

比如有下面这样的分支判断代码

class A public void method(String state){if("state1".equals(state)){//..省略代码1} else if("state2".equals(state)){//..省略代码2} else if("state3".equals(state)){//..省略代码3} else {//..省略代码4} }}

去除分支判断分两步

把分支的代码和分支判断分解到单独的类改写A.method方法

interface State{//分支的代码public void method();//分支判断public boolean test(String state);}class StateOne implements State{public void method(){//..省略代码1}public boolean test(String state){return "state1".equals(state);}}//省略 StateTwo 、StateThree、StateFourclass A List<State> states = new ArrayList<>();{states.add(new StateOne());states.add(new StateTwo());states.add(new StateThree());states.add(new StateFour());}public void method(String state){for(State st: states) {if (st.test(state) {st.method();}}}}

除了上面的方法,建议去学习一下设计模式的策略模式和状态模式,两种模式都可以避免冗长分支判断。当然模式本身不是为了这个目的,但确实可以避免冗长分支判断。

应用场景

1、需要复用分支代码

2、分支代码太长且逻辑有内聚性,根据单一职责原则,已经足以把它独立为一个类

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。