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

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

相关推荐
怕浪猫3 小时前
一行命令复刻爆款视频,我把 Hypit 从安装跑到了出片
人工智能·设计模式·程序员
Zane19946 小时前
函数式编程里的函数,其实不是你天天写的那个函数——三大编程范式的边界在哪
设计模式
Zane19941 天前
策略模式现在该不该上?一次讲清楚过度设计和设计不足怎么找平衡
设计模式
她说..1 天前
常见设计模式-模板方法模式
java·spring·设计模式·springboot
xiaofeiyang1502 天前
第六章 · 桥接 — 三支毛笔,画出九种颜色
设计模式
Shadow(⊙o⊙)2 天前
OTOL设计模式 One Thread One Loop
服务器·网络·设计模式
sarasuki3 天前
如何让LLM 能在半夜偷偷打开网易云呢?
人工智能·设计模式·agent
小王师傅663 天前
【设计模式】装饰模式(四):框架源码实战——从 Java I/O 到 Spring 到 MyBatis
java·设计模式
执明wa3 天前
Android RecyclerView 多类型, 多种 Item
android·xml·开发语言·设计模式·android studio
sarasuki3 天前
如何让 Agent 获取更多的能力?插件 / 技能系统
人工智能·设计模式·agent