设计模式(三):工厂模式+策略模式

目录

1、工厂类FactoryStrategy负责创建策略的工厂

2、Strategy接口,就一个execute方法。

3、定义接口的实现

4、写一个Controller类,用于进行测试


具体策略模式和工厂模式,使用这个这两个模式主要是防止程序中出现大量的IF ELSE IF ELSE。

1、工厂类FactoryStrategy负责创建策略的工厂

比较关键的一点是AutoWired一个Map<String, Strategy> 这个会在初始化的时候将所有的Strategy自动加载到Map中,是不是很方便。使用concurrentHashMap是防止多线程操作的时候出现问题。同时还要注意@Service注解。

@Service
public class FactoryStrategy {

    @Autowired
    Map<String,Strategy> strategys = new ConcurrentHashMap<>(3);

    public Strategy getStragegy(String component) throws Exception{
        Strategy strategy = strategys.get(component);
        if(strategy == null){
            throw new RuntimeException("no strategy defined");
        }
        return strategy;
    }

}

2、Strategy接口,就一个execute方法。

public interface Strategy {

    String execute();
}

3、定义接口的实现

我定义了三个, 都类似,这里我就放出一个来吧。Component里边的one是指定其名字,这个会作为key放到Map strategys里边。

@Component("one")
public class StrategyOne implements Strategy{

    @Override
    public String execute() {
        return "one";
    }
}

@Component("two")
public class StrategyTwo implements Strategy{

    @Override
    public String execute() {
        return "two";
    }
}

4、写一个Controller类,用于进行测试

@Controller
public class StrategyController {

    @Autowired
    FactoryStrategy factoryStrategy;

    @RequestMapping("/strategy")
    @ResponseBody
    public String strategy(@RequestParam("key")String key){
        String result;
        try {
            result = factoryStrategy.getStragegy(key).execute();
        } catch (Exception e) {
            result = e.getMessage();
        }
        return result;
    }
}

参考:Springboot中实现策略模式+工厂模式 - 黄青石 - 博客园

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值