springboot 策略模式 优化 项目 ifelse 重构

最近新上手了一个项目,核心代码中存在大量的if else if else if条件判断,让人看得头皮发麻,尝试使用策略模式优化代码结构。

伪源代码:

if( a.equal(TaskStatus.Free)){

.....

}else if(a.equal(TaskStatus.LOAD)){

....

}else if(a.equal(TaskStatus.UNLOAD)){

.....

}

目的是根据a的值来判断应该执行的内容。现使用传统的策略模式进行优化。

代码结构如下:

一个策略接口,一个状态枚举类,四个策略实现类,一个 useService类,在service类中将所有策略 装载到一个策略Map中,方便在别的类中调用,不需要频繁创建具体策略。

状态枚举类




public enum TaskStatus {

    FREE("0","空闲"),

    LOAD("1", "自动吊货"),

    UNLOAD("2", "自动放货"),

    UNKNOWN("3", "其他");
    
    private final String name;
    private final String value;
    TaskStatus(String value, String name) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }
    public String getValue() {
        return value;
    }
    public static TaskStatus match(String name) {
        for(TaskStatus value:TaskStatus.values()){
            if (value.equals(name));
                return value;
        }
        return UNKNOWN;
    }
}

接口类

实现类1

实现类2

 其他实现类大同小异就不一一列举了。

useService类实现了 ApplicationContextAware 接口重写了 setApplicationContext方法,在springboot项目启动时,执行setApplicationContext。在setApplicationContext中完成装载策略类的集合

在别的类中获取策略的集合并进行调用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值