0设计模式使用场景

文章目录

      • [1. 单例模式(Singleton)](#1. 单例模式(Singleton))
      • [2. 工厂模式 / 简单工厂 / 抽象工厂](#2. 工厂模式 / 简单工厂 / 抽象工厂)
      • [3. 策略模式(Strategy)高频!](#3. 策略模式(Strategy)高频!)
      • [4. 模板方法模式(Template Method)](#4. 模板方法模式(Template Method))
      • [5. 代理模式(Proxy)](#5. 代理模式(Proxy))
      • [6. 装饰器模式(Decorator)](#6. 装饰器模式(Decorator))
      • [7. 观察者模式(Observer)](#7. 观察者模式(Observer))
      • [8. 建造者模式(Builder)](#8. 建造者模式(Builder))
      • [9. 适配器模式(Adapter)](#9. 适配器模式(Adapter))
      • [10. 责任链模式(Chain of Responsibility)](#10. 责任链模式(Chain of Responsibility))

1. 单例模式(Singleton)

用到的地方:

  • Spring 中 Bean 默认 singleton
  • 工具类:RedisUtil、ExcelUtil、DateUtil
  • 线程池、工厂类、配置类
  • 全局异常处理器、拦截器

一句话:全局唯一、避免重复创建、节约资源。

2. 工厂模式 / 简单工厂 / 抽象工厂

用到的地方:

  • Spring BeanFactory、ApplicationContext
  • MyBatis SqlSessionFactory
  • 线程池工厂 Executors
  • 多数据源切换
  • 支付渠道工厂(支付宝/微信/银联)

一句话:封装对象创建,统一管理,便于扩展。

3. 策略模式(Strategy)高频!

用到的地方:

  • 不同支付方式
  • 不同文件解析策略(Excel/PDF/Word)
  • 不同消息推送(短信/邮件/站内信)
  • 权限校验策略、日志存储策略
  • 若依中多类型字典解析、导出策略

一句话:消除大量 if-else,符合开闭原则。

4. 模板方法模式(Template Method)

用到的地方:

  • MyBatis BaseMapper
  • Spring JdbcTemplate
  • 通用业务流程:校验 → 处理 → 日志 → 通知
  • 若依的 BaseController、BaseService

一句话:固定流程骨架,子类只实现差异步骤。

5. 代理模式(Proxy)

用到的地方:

  • Spring AOP(日志、事务、权限)
  • MyBatis Mapper 代理
  • 分布式锁代理、缓存代理
  • 异步方法代理 @Async

一句话:不修改原代码,增强功能。

6. 装饰器模式(Decorator)

用到的地方:

  • Java IO 流(BufferedInputStream 包裹 FileInputStream)
  • 缓存装饰、日志装饰
  • 请求/响应包装类

一句话:动态增强对象功能,比继承更灵活。

7. 观察者模式(Observer)

用到的地方:

  • 消息队列发布订阅
  • Spring Event 事件机制
  • 订单创建后触发:扣库存、发短信、push
  • 网关、监听配置变更

一句话:一对多通知,解耦触发与执行。

8. 建造者模式(Builder)

用到的地方:

  • Lombok @Builder
  • StringBuilder、StringBuffer
  • 统一返回对象 AjaxResult.build()
  • 复杂查询条件构建

一句话:分步构建复杂对象,代码优雅。

9. 适配器模式(Adapter)

用到的地方:

  • Spring MVC HandlerAdapter
  • 第三方接口适配(统一返回格式)
  • 老系统接口兼容新系统

一句话:把不兼容接口转成统一标准。

10. 责任链模式(Chain of Responsibility)

用到的地方:

  • 过滤器 Filter、拦截器 Interceptor
  • Spring Security 权限链
  • 审批流、多级审核
  • 参数校验、日志、签名、防重提交链路

目的是提高代码可维护性、可扩展性,降低耦合,符合开闭原则。

相关推荐
z小天才b15 小时前
Java 设计模式完全指南:从入门到精通
java·开发语言·设计模式
kyriewen1116 小时前
Next.js:让你的React应用从“裸奔”到“穿衣服”
开发语言·前端·javascript·react.js·设计模式·ecmascript
A-Jie-Y17 小时前
JAVA设计模式-工厂方法模式
java·设计模式
A-Jie-Y17 小时前
JAVA设计模式-单例模式
java·设计模式
geovindu18 小时前
go: Iterator Pattern
开发语言·设计模式·golang·迭代器模式
Ting.~20 小时前
软件设计师备考笔记【day2】-UML 图解 | 面向对象 | 设计模式
笔记·设计模式·uml
qcx2320 小时前
深入解析,什么是Agent,Agent的 架构与设计模式
设计模式·架构
geovindu1 天前
go: Chain of Responsibility Pattern
开发语言·设计模式·golang·责任链模式
AndreasEmil2 天前
基于多设计模式的抽奖系统 - 测试报告
java·selenium·设计模式·postman
长安11082 天前
设计模式----工厂模式
设计模式