最近新上手了一个项目,核心代码中存在大量的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 版权协议,转载请附上原文出处链接和本声明。