如果优化设计?多个分支且不相交

marf_cn 2007-11-30 09:04:58
遇到这样的问题,if非常多,且几乎都不是判断同一条件的,导致代码非常臃肿。例如:
if(a){
if(b){
...
else{
...
}
}else{
if(b){
...
else{
...
}

}因为a、b两个条件不相交,且得考虑2*2=4种情况,代码很烂,不知道有什么好的办法解决
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷眼流金 2007-12-03
  • 打赏
  • 举报
回复
逻辑上无法优化的话,考虑一下设计模式,不过只是代码上的结构优化一下,骨子里的ifelse还是逃不掉的
lujun1985 2007-12-03
  • 打赏
  • 举报
回复
根据你的代码
当a为true的时候要执行
if(b){
...
else{
...
}
当a为false的时候也执行这段代码~
那a的true/false也就失去了意义了啊



package demo;

public class MultiCheck {

interface Checker {
public void check();
}

static class Checker1 implements Checker {
@Override
public void check() {
System.out.println("条件a为true时的check代码");
}
}

static class Checker2 implements Checker {
@Override
public void check() {
System.out.println("条件a为false时的check代码");
}
}

// 当是满足条件A的时候,就生成Checker1
// 这里就相当于条件判断的第一层(a=true or false),应该是根据逻辑来生成相应的Checker,但这里不
// 清楚你们的条件,所以就写成了这样
public static Checker getChecker() {
boolean a = true;
if(a) {
return new Checker1();
} else {
return new Checker2();
}
}

public static void main(String[] args) {
Checker checker = getChecker();
checker.check();
}
}

上面的代码只是我的一个想法,你可以参考一下
fanql_222 2007-12-03
  • 打赏
  • 举报
回复
你可以把判断写进一个单独的方法里面
zhb_821012 2007-12-03
  • 打赏
  • 举报
回复
用switch........case语句应该能代替吧
这个结构会简单点,不过得看你需求能不能代替了
if语句效率还是最高的虽然看的臃肿点
天外流星 2007-12-03
  • 打赏
  • 举报
回复
用switch case或条件表达式int c=(a <b)?a:b;
marf_cn 2007-12-03
  • 打赏
  • 举报
回复
顶一下
zhangbaokun 2007-11-30
  • 打赏
  • 举报
回复
好像没什么方法吧

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧