ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

itstack-demo-design桥接模式:支付渠道与支付方式分离,2×2类爆炸问题一次性解决

itstack-demo-design桥接模式:支付渠道与支付方式分离,2×2类爆炸问题一次性解决 itstack-demo-design桥接模式支付渠道与支付方式分离2×2类爆炸问题一次性解决【免费下载链接】itstack-demo-design:art: 《重学Java设计模式》是一本互联网真实案例实践书籍。以落地解决方案为核心从实际业务中抽离出交易、营销、秒杀、中间件、源码等22个真实场景来学习设计模式的运用。欢迎关注小傅哥微信(fustack)公众号bugstack虫洞栈博客https://bugstack.cn项目地址: https://gitcode.com/fuzhengwei/itstack-demo-design学习itstack-demo-design重学Java设计模式这个项目就像打开了一本互联网真实案例设计模式教程。本篇带你用支付系统这个经典场景快速吃透Java 设计模式之桥接模式把支付渠道和支付方式两个维度拆开一次解决类爆炸难题新手也能看懂。 为什么需要桥接模式支付系统的类爆炸烦恼想象你要做一个支付功能有两个维度维度取值支付渠道微信支付、支付宝支付方式密码支付、人脸支付、指纹支付如果按一个渠道 × 一种方式 一个类的写法类数量会像滚雪球一样增长2 渠道 × 2 方式 4 个类2 渠道 × 3 方式 6 个类再来个银联渠道 × 3 方式 9 个类……每加一个维度就要新写一堆几乎重复的类改一个公共逻辑要改 N 处。这就是典型的类爆炸问题。桥接模式Bridge Pattern的思路让渠道和方式各自独立变化、自由组合2×2的乘法题变成22的加法题。 桥接模式怎么运作抽象与实现各管一摊在 itstack-demo-design-7-02 模块中代码结构非常清晰核心就是一个接口 一个抽象类1️⃣ 支付方式用接口抽象实现端IPayMode.java 定义了支付方式这一维度的统一入口只关心风控校验security方法PayCypher.java密码支付校验环境安全PayFaceMode.java人脸支付校验脸部识别PayFingerprintMode.java指纹支付校验指纹信息2️⃣ 支付渠道用抽象类抽象抽象端Pay.java 是支付渠道的抽象基类它持有一个 IPayMode 引用——这就是桥public Pay(IPayMode payMode) { this.payMode payMode; }渠道类只声明转账transfer的骨架具体校验交给桥对面的支付方式去完成WxPay.java微信渠道划账先调payMode.security(uId)做风控不通过则拦截返回0001ZfbPay.java支付宝渠道划账逻辑与微信对称一句话总结渠道管往哪打钱方式管怎么验身份两者通过构造器注入解耦。 场景演示微信人脸、支付宝指纹自由组合测试代码 ApiTest.java 展示了桥接模式最爽的地方——任意组合、互不干扰// 微信支付 × 人脸方式 Pay wxPay new WxPay(new PayFaceMode()); wxPay.transfer(weixin_1092033111, 100000109893, new BigDecimal(100)); // 支付宝支付 × 指纹方式 Pay zfbPay new ZfbPay(new PayFingerprintMode()); zfbPay.transfer(jlu19dlxo111, 100000109894, new BigDecimal(100));运行后日志依次打印风控校验脸部识别 → 微信渠道划账成功、风控校验指纹信息 → 支付宝渠道划账成功。渠道和方式各自独立组合方式是乘法级的代码却只有加法式的增长。 扩展对比新增功能只写一个类扩展需求传统写法桥接模式新增银联渠道银联×密码、银联×人脸、银联×指纹3 个类只加1 个类继承 Pay新增刷掌支付微信×刷掌、支付宝×刷掌2 个类只加1 个类实现 IPayMode修改风控逻辑每个渠道类里各改一遍只改对应方式类1 处类数量从渠道数 × 方式数降为渠道数 方式数这就是桥接模式对2×2 类爆炸的终极答案。 延伸阅读项目中的设计模式系列本例来自开源项目itstack-demo-design它是《重学 Java 设计模式》一书的配套案例库覆盖交易、营销、秒杀等 22 个真实场景。相关模块与资料桥接模式完整代码itstack-demo-design-7-02支付控制器早期版本未拆分前PayController.java更多模式案例导航README.md✅ 小结桥接模式 抽象与实现分离用接口抽象支付方式用抽象类抽象支付渠道通过对象引用搭起桥梁核心价值两个维度的变化互不影响类数量从乘法降为加法彻底告别类爆炸适用信号当你发现类名开始出现渠道A方式B渠道A方式C这样的组合爆炸时就该请桥接模式出马了打开 itstack-demo-design-7-02 模块跑一遍ApiTest配合日志观察风控与划账流程5 分钟就能把桥接模式玩明白 【免费下载链接】itstack-demo-design:art: 《重学Java设计模式》是一本互联网真实案例实践书籍。以落地解决方案为核心从实际业务中抽离出交易、营销、秒杀、中间件、源码等22个真实场景来学习设计模式的运用。欢迎关注小傅哥微信(fustack)公众号bugstack虫洞栈博客https://bugstack.cn项目地址: https://gitcode.com/fuzhengwei/itstack-demo-design创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表