问题描述
一个switch语句里面 如果有50个case子句switch(pt){ case A: break; case B: break; .....}以后维护起来肯定很困难,有什么好的方法能避免 或者替换掉?
解决方案
用访问者模式来做就很好.1.把每个条件作成一个类,比如 A条件class A { public void accept(){ //处理逻辑 }}然后把每个条件的处理方法都用一个类来管理.public class CommonVisitor{ public void visit(A a){ a.accept(); } //其他条件的访问方法 public void visit(B b){ b.accept(); }}main里面就这样调用就行.public static void main(Stirng args[]){ CommonVisitor visitor = new CommonVisitor(); //如果是想用A条件,则 visitor.visit(new A());}这样写的好处,以后先加条件的话我只需要定义新的条件类就行,还有就是在CommonVisitor添加新条件的访问方法就行,这样就很好作到一个条件管理一个逻辑
解决方案二:
观察者模式
解决方案三:
将 case 分支分成多个函数,对条件 A,B,C... 和函数做一个 map 映射,然后根据条件使用 java 反射机制调用相应函数。
解决方案四:
只能case A:case B: break;
时间: 2024-10-31 16:22:57