if else 的代码重构

本文探讨了状态模式和责任链模式的应用。通过重构代码减少if-else判断,提高程序可维护性和扩展性。介绍了状态模式如何管理对象状态转换及责任链模式处理请求流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  1. 不同状态下做不同的事情
  2. 页面上的if判断,不同情况输出不同的内容
  3. 不同状态之间转换-状态模式的应用
  4. 不能根据一个状态找到处理者, 则每个都尝试一下 -  责任链模式

 

正文

  • 状态值的if判断

重构后的代码

  • 页面上的if判断

修改后,将业务逻辑移到java层, 采用MVC

  

 

 

  • 不同状态之间转换-状态模式的应用

业务场景:

 以传送带的门为例,考虑其状态变化过程为:传送带的门由单个按钮控制,并且假设初始时处于关闭状态。按一下按钮门开始打开,如果在门完全打开之前再次按下按钮,门开始关闭。一旦门完全打开,它将在2秒延时之后自动开始关闭过程。要禁止门自动关闭,可以在门打开之后按一下按钮。下图描述了传送门的状态变化情况

可能的代码

 

重构后的代码:

状态基类

door代码

其中OpenState类的代码

 

 

[见:http://www.dnbcw.com/biancheng/java/ontc234886.html]

  • 职责链模式 
    如果不能根据某一个具体的状态值找到对应的Handler 或者 command类进行处理, 那么可以构造一个责任链, 把不同的handler串联起来,  把数据放到一个context中, 依次交给链中的Handler进行处理, Handler自己判断如果接受这次请求, 则自己处理, 否则调用下一个节点.

Handler接口

结尾

  • 个人总结, 欢迎批评指正
多层if else重构是一种优化代码结构的方法,它可以将复杂的条件判断逻辑简化为更清晰、可读性更高的代码。下是一种常见的多层if else重构方式: 1. 使用switch语句替代多层if else:如果条件判断的结果是一个离散的值,可以考虑使用switch语句来替代多层if else。switch语句可以根据不同的值执行相应的代码块,使代码结构更加清晰。 2. 使用多个if else if语句:如果条件判断的结果是连续的范围值,可以使用多个if else if语句来替代多层if else。这样可以将条件判断的逻辑分解成多个独立的判断,提高代码的可读性和可维护性。 3. 使用策略模式:如果多层if else中的每个条件判断都对应不同的处理逻辑,可以考虑使用策略模式来重构代码。策略模式将每个处理逻辑封装成一个独立的策略类,通过选择不同的策略类来执行相应的处理逻辑,避免了多层if else的复杂嵌套。 4. 使用状态模式:如果多层if else中的条件判断与对象的状态相关,可以考虑使用状态模式来重构代码。状态模式将每个状态封装成一个独立的状态类,通过切换不同的状态类来改变对象的行为,避免了多层if else的冗长判断。 5. 使用工厂模式:如果多层if else中的条件判断用于创建不同类型的对象,可以考虑使用工厂模式来重构代码。工厂模式将对象的创建逻辑封装到一个工厂类中,根据条件判断选择不同的工厂方法来创建相应的对象,避免了多层if else的复杂判断和对象创建逻辑的耦合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值