使用 Spring 实现策略模式可以这么简单( 二 )

最后我们改造一下 RouteService,具体逻辑如下:
@Servicepublic class RouteService {@AutowiredSet<PayService> payServiceSet;Map<String, PayService> payServiceMap;public PayResult epay(PayRequest payRequest) {PayService payService = payServiceMap.get(payRequest.getChannelNo());returnpayService.epay(payRequest);}@PostConstructpublic void init() {for (PayService payService : payServiceSet) {payServiceMap = new HashMap<>();payServiceMap.put(payService.channel(), payService);}}}上面代码首先通过自动注入 PayService 一个集合,然后我们再将其转为一个 Map,这样内部存储刚好是唯一标识与实现类的映射了 。
好了,今天的小技巧就分享到这里,学到小伙伴,不妨点个赞吧 。




推荐阅读