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

  • Post author:
  • Post category:其他


最近新上手了一个项目,核心代码中存在大量的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中完成装载策略类的集合

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



版权声明:本文为2301_76826022原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。