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 权限链
  • 审批流、多级审核
  • 参数校验、日志、签名、防重提交链路

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

相关推荐
剧中有戏9 小时前
抽象工厂模式从入门到精通:一个多云存储案例的完整剖析(修订版)
设计模式
MC皮蛋侠客13 小时前
Redis 系列(八):缓存设计模式与一致性——从 Cache Aside 到防雪崩
redis·缓存·设计模式
莫得感情 o15 小时前
设计模式 18 · 状态模式
设计模式·状态模式
莫得感情 o15 小时前
设计模式 17 · 责任链模式
设计模式·责任链模式
用户938515635071 天前
从零在浏览器里跑 DeepSeek-R1:WebGPU + Transformer.js 全链路实战
前端·设计模式·typescript
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-04-工厂方法模式(业务实战篇)
java·设计模式·工厂方法模式·架构设计·代码解耦
今天的砖头有点烫手啊1 天前
AI Agent 开发实战(十):Agent 设计模式(ReAct / Plan-Execute / Reflection)
人工智能·react.js·设计模式
董员外1 天前
RAG 系统进化论(十):可运营 RAG,从原型到长期运行的知识系统
人工智能·后端·设计模式
莫得感情 o2 天前
设计模式 15 · 模板方法模式
设计模式·模板方法模式