使用场景
在一个条件语句中又包含了多个条件语句
具体策略类会过多
把抽象策略和具体策略放在一个枚举类里。
方法 exe() 相当于抽象策略,而A和B就相当于实现了抽象策略的具体策略
这样就只需要一个枚举类就可以解决具体策略类过多的问题
public enum Strategy {
A{
@Override
public void exe() {
System.out.println("执行具体策略A");
}
},
B{
@Override
public void exe() {
System.out.println("执行具体策略B");
}
};
public abstract void exe();
}
彻底消除if else
Map<条件,具体策略>
完整代码
public enum Strategy {
A{
@Override
public void exe() {
System.out.println("执行具体策略A");
}
},
B{
@Override
public void exe() {
System.out.println("执行具体策略B");
}
};
public abstract void exe();
}
public class Test {
public static void main(String[] args) {
Map<String, Strategy> map=new LinkedHashMap<>();
map.put("A",Strategy.A);
map.put("B",Strategy.B);
String str="A";
map.get(str).exe();
}
}