解决ifelse过多问题

本文探讨了在Java中如何解决if...else语句过多的问题,提出了解决方案,包括表驱动、责任链模式、注解驱动、事件驱动、有限状态机、Optional和多态。每种方法都有其适用场景和实现方式,例如表驱动适用于逻辑固定的场景,责任链模式适用于条件表达式灵活多变的情况,而多态则能结合表驱动优化代码结构。
摘要由CSDN通过智能技术生成

问题

if else过多问题可以分成三类问题:

  • if…else 过多
  • 逻辑表达式复杂
  • 嵌套过深

本节只讨论过多问题:

public void test(){
   
    if(condition1){
   
      //do something
    }else if(conditon2){
   
      //do something
    }else if(conditon3){
   
      //do something
    }else if(conditon4){
   
      //do something
    }else if(conditon5){
   
      //do something
    }
}

解决问题

解决if…else过多问题的几种方案:

表驱动、责任链模式、注解驱动、事件驱动、有限状态机、Optional、多态。

结构化思维导图:

方法1:表驱动

**介绍:**对于逻辑表达模式固定的 if…else 代码,可以通过某种映射关系,将逻辑表达式用表格的方式表示;再使用表格查找的方式,找到某个输入所对应的处理函数,使用这个处理函数进行运算。

**适用场景:**逻辑表达式比较固定的场景

使用表驱动法的两个问题:

  1. 怎样从表中查询条目:直接访问、索引访问、阶梯访问
  2. 表里应该存储什么:数据、动作、函数、类,其实都可以,针对于java语言,一切皆是对象,那么表里可以存对象,只是要确定这个对象充当的角色就可以。

直接访问-案例代码:

int getMonthsDay(int month){
   
    int day;
    switch(month){
   
        case 1,3,5,7,8,10,12:
            day=31;break;
        case 4,6,9,11:
            day=30;break;
        case 2:
            day=28;break;
            default: day=0;
    }
    return  day;
}


//优化版本表驱动法
int days[]={
   31,28,31,30,31,30,31,31,30,31,30,
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hymKing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值