策略模式-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   而且最重要的是符合了开闭原则,如果再来一个上海,那么只需要填加一个实现类即可

不需要改动任何代码。

 

posted @ 2021-07-14 09:40  0o飞行天下o0  阅读(343)  评论(0编辑  收藏  举报