枚举优化if-else if -else过程记录

简介: 枚举优化if-else if -else过程记录

目的

需求添加新条件,于是有了类似下面的代码:


if (Constant.BYTE_ONE.equals(params.getSpecialFlag())) {
this.send1(openid, params);
}elseif (Constant.BYTE_TWO.equals(params.getSpecialFlag())){
this.send2(openid, params);
}elseif (Constant.BYTE_THREE.equals(params.getSpecialFlag())){
this.send3(openid, params);
}elseif (Constant.BYTE_FOUR.equals(params.getSpecialFlag())){
this.send4(openid, params);
}elseif (BYTE_FIVE.equals(params.getSpecialFlag())){
this.send5(openid, params);
}elseif (BYTE_SIX.equals(params.getSpecialFlag())){
this.send6(openid, params);
}else {
this.sendDefault(openid, params);
}


以上代码肯定是不允许的,如果后期需求再次添加,还会添加很多else-if。


优化方案


1、枚举方式(本次采用)


2、策略-工厂模式


优化步骤:


一、编写枚举类:(公司代码已删减,以下伪代码,仅供参考)


publicenumOperatorTest {
ONE {
@Overridepublicvoidapply(StringopenId, OpportunityMsgParamsparams) {
// 调用的静态方法(业务方法)PT2WXMessageServiceImpl.send1(openId, params);
        }
    },
TWO {
@Overridepublicvoidapply(StringopenId, OpportunityMsgParamsparams) {
// 其他:如:两个值的 + - * /...//            return a * b;        }
    };
publicabstractvoidapply(StringopenId, OpportunityMsgParamsparams);
}

二、service层方法调用类:

publicclassApply {
publicvoidapply(StringopenId, OpportunityMsgParamsparams, OperatorTestoperatorTest) {
operatorTest.apply(openId, params);
    }
}

三、测试


// map加入所有类型staticMap<Byte, String>operationMap=newHashMap<>();
static {
operationMap.put((byte) 1, "ONE");
operationMap.put((byte) 2, "TWO");
}
@OverridepublicResponseMessagesendOpportunityMsg(OpportunityMsgParamsparams) {
    .....
// 获取需要的指定类型Stringvalue=operationMap.get(params.getSpecialFlag());
Applyapply=newApply();
// 调用枚举中的业务方法apply.apply(openid, params, OperatorTest.valueOf(value));
    ......
});

总结:以上只是采用枚举去除繁杂的  if-else if-else  方法,也可以采用策略-工厂......方式,有更好的方式,可以留言共同交流!!

目录
相关文章
|
2月前
|
数据处理
重复值的判断标准是否可以根据具体业务需求进行调整?
重复值的判断标准需要紧密结合具体的业务需求进行灵活调整,这样才能确保数据处理的准确性和有效性,为业务决策提供可靠的数据支持。
125 58
|
2月前
|
传感器 存储 索引
如何解决 analogRead()函数读取到的模拟值不准确的问题
在使用analogRead()函数时,若读取到的模拟值不准确,可以通过校准ADC、增加采样次数取平均值、使用外部参考电压或检查电路连接等方式来提高读取精度。
分页列表数据不出来,初始化页面数据不出来的原因,Create中传一个参数1,解决bug的方法,学习敲代码的时候仔细与原项目比对,从上比到下
分页列表数据不出来,初始化页面数据不出来的原因,Create中传一个参数1,解决bug的方法,学习敲代码的时候仔细与原项目比对,从上比到下
|
8月前
|
数据采集 SQL 监控
分析重复数据通常涉及以下步骤,以确保对重复项的来源和性质有深入理解
【4月更文挑战第2天】分析重复数据通常涉及以下步骤,以确保对重复项的来源和性质有深入理解
89 1
|
Java
策略枚举:消除在项目里大批量使用if-else的优雅姿势
可以替换大量的if-else语句,且具备较好的可读性与扩展性,同时能显得轻量化,我比较推荐使用策略枚举来消除if-else。
147 0
ookie 值的修改方案
ookie 值的修改方案
102 0
|
存储 资源调度 数据可视化
R问题|数值模拟流程记录和分享
R问题|数值模拟流程记录和分享
159 0
|
前端开发 程序员
大量if else判断如何优化?@Valib详解
大量if else判断如何优化?@Valib详解
大量if else判断如何优化?@Valib详解
Kam
|
Java
枚举去除大量if-else if -else优化记录
java中去除大量if-else
Kam
366 1
集合或映射迭代过程进行删除或修改操作的时候会导致并发异常
集合或映射迭代过程进行删除或修改操作的时候会导致并发异常
158 0
集合或映射迭代过程进行删除或修改操作的时候会导致并发异常