策略模式-spring
1、策略模式:标准用法是有三个角色:环境、抽象策略、具体策略
大概解释一下,环境是持有抽象策略的引用,具体策略是抽象策略的实现,当不同参数传给环境角色时,它根据具体情况,获取相应
的具体策略对象,然后进行调用。看起来似乎还是有if else的逻辑,哈哈。
2、我举例spring中对策略模式的应用,以下是伪代码:
public Interface CitySay{
boolean surport(String code);
sayCityName();
}
public class Chongqing implements CitySay{
@overrid
public void sayCityName(){
sout("我是重庆。。。")
}
@overrid
boobean surport(String code){
if("CQ".equales(code)){
return true;
}else{
return false;
}
}
}
public class Shandong implements CitySay{
@overrid
public void sayCityName(){
sout("我是山东。。。")
}
@overrid
boobean surport(String code){
if("SD".equales(code)){
return true;
}else{
return false;
}
}
}
使用:
入参 string code
List<CitySay> lists=SpringUtil.getBeanNamesForType(CitySay.class);
for(CitySay city:lists){
if(city.surport(code)){
city.sayCityName();
}
}
for循环的方式避免了使用if else 而且最重要的是符合了开闭原则,如果再来一个上海,那么只需要填加一个实现类即可
不需要改动任何代码。