当前位置: 首页 > news >正文

如何理解和认识设计模式

在Java开发中,一个比较流程的概念就是“设计模式”,特别是在一些基础框架中,更是充满了对各种设计模式的应用。

在应用软件开发行业从业了这么多年,也曾拜读过相关技术书籍,对于设计模式的名字也能娓娓道来,但是对于设计模式的理解,似乎一直以来都不深刻,换言之:只学到了设计模式的概念,并没有真正吃透设计模式存在的意义以及如何在项目中灵活运用。在过往的软件开发项目中,也层主动或被动地使用过一些常用的设计模式,但是并没有真正领悟到设计模式的所带来的好处,似乎是一种顺其自然的使用。

直到今天再次应用“责任链模式”解决支付网关的切换问题时,才从心底感受到设计模式所带来的益处。

结合这么多年的开发实践,说说我对设计模式的理解:简化代码结构,便于理解,维护和迭代,这是最直接的收益。

反之,如果不应用设计模式,那么编写出来的代码可能充斥着大量的if...else...结构,不利用项目演进过程中的迭代和扩展。

业务场景举例:
支付中心同时对接了原生支付宝支付和微信支付,还需要接入付呗支付(注:付呗支付本质上对接的也是支付宝和微信支付)。产品设计如下规则:原生支付宝存在收款限额,当超过设定的指定限额时直接切换使用付呗支付宝支付;另外,设定支付比例,比如:20%的请求使用原生支付宝和原生微信支付,80%的请求使用付呗支付宝和付呗微信支付;统计失败率,当原生支付宝/微信 或 付呗支付宝/微信的失败率超过某个阈值后自动切换成另一种支付渠道。

针对上述业务场景,如果不使用任何设计模式,编写出的代码结果可能是如下情况:

# 伪代码:硬编码的弊端
def pay(amount, pay_type):if pay_type == "alipay":# 先判断比例if random.random() < 0.2:# 再判断原生支付宝是否可用+是否超限额if 原生支付宝可用 and amount <= 限额:return 原生支付宝支付()else:# 切付呗支付宝if 付呗支付宝可用:return 付呗支付宝支付()else:return 支付失败else:# 80%走付呗if 付呗支付宝可用:return 付呗支付宝支付()else:# 降级到原生if 原生支付宝可用 and amount <= 限额:return 原生支付宝支付()else:return 支付失败# 微信同理,重复大量代码

这种实现的问题:耦合严重(改比例要动所有 if)、扩展性差(新增渠道要加大量 if)、维护难(规则嵌套层级深,定位问题繁琐)、无法动态熔断(失败率判断要嵌入每个分支)。

如果使用责任链模式能将这些判断逻辑完全拆分,让每个节点只做一件事,完美规避以上问题,这就是设计模式的价值所在。

http://www.jsqmd.com/news/418573/

相关文章:

  • 计算机毕设java公益基金管理系统 基于Spring Boot的慈善捐助信息管理平台 爱心公益资金数字化运营系统
  • 数字模拟混合建模相关知识总结
  • 计算机毕业设计 | SpringBoot+vue高校专业实习管理系统 大学生实训管理(附源码+论文)
  • 掼蛋 游戏
  • 一篇Substack炸翻华尔街:《2028全球智能危机》全解读
  • TGDZcalc by Ada (43th)
  • 【Playwright】录制脚本与元素定位
  • 方法
  • 2026年济南抖音短视频代运营5强推荐榜单发布 - 精选优质企业推荐榜
  • 魅族
  • 提升学术工作效率的AI工具指南:六种自动化文献引用方法深度探讨
  • 别小看“移动零”:一道简单题背后的算法思维升级
  • 易灵思PLL几种反馈模式解释
  • python基于flask的企业员工人脸识别考勤系统-vue pycharm django
  • 2026年青海抖音代运营公司推荐榜单TOP5公布 - 精选优质企业推荐榜
  • 2026年徐州抖音短视频运营公司推荐榜单TOP5发布 - 精选优质企业推荐榜
  • cudnn批处理中取出训练成绩
  • python基于flask的企业员工薪酬绩效工资管理系统的设计与实现-vue pycharm django
  • 训练时,学习率下降调整
  • 2026年榆林抖音短视频运营公司推荐榜单公布 - 精选优质企业推荐榜
  • 2026年DeepSeek写论文AI率太高怎么办?3招把90%降到10%以下 - 我要发一区
  • python基于flask的同城医院陪诊服务预约系统设计与实现-vue pycharm django
  • 2026年唐山抖音短视频代运营公司推荐榜单公布 - 精选优质企业推荐榜
  • python基于flask的企业人事管理系统的设计与实现-vue pycharm django
  • 外包项目交付痛点,XinServer 的高效解决方案
  • 在仅有runtime的Docker镜像中使用dotnet global tool的方法
  • JavaScript详解:从入门到高级的全面学习指南
  • 3D模型转AI绘画:Blender+Stable Diffusion工作流
  • 2026年哈尔滨抖音短视频代运营公司5强推荐榜单发布 - 精选优质企业推荐榜
  • 比话降AI和嘎嘎降AI哪个好?花了200元实测对比告诉你 - 我要发一区