前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于策略模式实现对渠道的路由

基于策略模式实现对渠道的路由

原创
作者头像
路行的亚洲
发布2022-07-18 18:56:38
5720
发布2022-07-18 18:56:38
举报
文章被收录于专栏:后端技术学习后端技术学习

首先将需要路由的渠道信息采用map进行封装,这样的话,可以在使用的时候基于特定的策略进行路由。

代码语言:javascript
复制
@Component
public class PayContextStrategy {
?
    private static  final String aliPay ="10001";
?
    private static  final String yinlian ="10002";
?
    //容器: map
    private static Map<String, PayStrategy> strategyMap = new ConcurrentHashMap<>();
    //静态块 : static
    static {
        strategyMap.put(aliPay, new AliPayStrategy());
        strategyMap.put(yinlian, new YinLianPayStrategy());
    }
?
    //获取实例对象
    public static PayStrategy getInstance(String code) {
        return strategyMap.get(code);
    }
    
    public String toPay(String payCode){
        PayStrategy payStrategy = getInstance(payCode);
        if(payStrategy==null){
            return  "没有该渠道信息";
        }
        return  payStrategy.toPay();
    }
}

优化:可以将渠道信息放在枚举中,然后放入到map中。

支付宝渠道服务:

代码语言:javascript
复制
@Component
public class AliPayStrategy   implements PayStrategy {
    public String toPay() {
        return "调用支付宝支付接口...";
    }
}

银联渠道支付服务:

代码语言:javascript
复制
/**
 * 银联支付
 */
@Component
public class YinLianPayStrategy implements PayStrategy {
    public String toPay() {
        return "调用银联支付接口...";
    }
}

进行调用:

代码语言:javascript
复制
@RestController
public class PayController {
    @Autowired
    private PayContextStrategy payContextStrategy;
    @RequestMapping("/toPay")
    public  String toPay(String payCode){
        if(StringUtils.isEmpty(payCode)){
            return "渠道code不能为空!";
        }
        return payContextStrategy.toPay(payCode);
    }
?
}

当然在调用具体的业务时,策略调用放在service业务里面

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com